Select em banco de dados muito grande
Ola.
Tenho um banco de dados com 7 tabelas.
Elas juntas contem mais de 50 milhões de registros.
quero buscar registros dentro delas, mas minha consulta está demorando mais de 1,5 minutos.
Como poderia agilizar ela?
Segue o que estou usando:
<?php
$a = $_GET['a'];
if ($a == "buscar") {
$palavra = trim($_POST['palavra']);
$estado = trim($_POST['estado']);
$cidade = trim($_POST['cidade']);
$sql = mysql_query("
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS2
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS3
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS4
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS5
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS6
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM FIS7
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR1
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR2
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR3
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR4
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR5
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR6
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
UNION ALL
SELECT NOME, TIPO, ENDERECO, NUMERO, BAIRRO, CIDADE, UF, DDD, CEP, TELEFONE FROM JUR7
WHERE NOME LIKE '".$palavra."%' AND CIDADE LIKE '".$cidade."%'
") ;
$numRegistros = mysql_num_rows($sql);
if ($numRegistros != 0) {
// Exibe os produtos e seus respectivos preços
while ($produto = mysql_fetch_object($sql)) {
echo "<div class=\"wrong\">
$produto->NOME <br />";
echo "<font COLOR=#000000 font-weight: bold; font-size:1;>($produto->DDD)$produto->TELEFONE</font></a><br />";
echo "<font COLOR=#000000 font-weight: bold; font-size:1;>$produto->TIPO $produto->ENDERECO, $produto->NUMERO - $produto->BAIRRO</font></a><br />";
echo "<font COLOR=#000000 font-weight: bold; font-size:1;>$produto->CIDADE, $produto->UF | CEP: $produto->CEP</font></a><br />";
echo '<img src="" border=0 height="1" width="200">';echo "<font COLOR=#000000 font-weight: bold; size=+1></font> <br />";
"</div>";
}
// Se não houver registros
} else {
echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
}
}
?>Discussão (21)
Carregando comentários...