2016-04-08 74 views
0

Bu benim kodudur:Kodum arama gerçekten yavaş olduğu

$sql = "SELECT *,MATCH (CUIT,DENOMINACION) AGAINST ('%{$word}%') AS Score FROM cuits WHERE"; 
$sql_end = ''; 
foreach($words as $word) { 
    $sql_end .= " AND MATCH (CUIT,DENOMINACION) AGAINST ('%{$word}%' IN BOOLEAN MODE) AND BAJA=0 "; 
    $sql_end2 = "order by DENOMINACION limit $inicio, $TAMANO_PAGINA"; 
} 

Çok yavaş. Hızı nasıl artırabilirim?

+0

Bu aramada hangi dili kullanıyorsunuz? Burada etiketlenmedi. Rasgele verilerin daha hızlı aranmasını istiyorsanız, [tam metin arama özelliklerini] kullanmayı deneyin (http://dev.mysql.com/doc/refman/5.7/en/fulltext-fine-tuning.html). – tadman

cevap

1

LIKE stilindeki joker dizeleri %'u kullanmak FULLTEXT aramasında anlam ifade etmiyor. Bu nedenle AGAINST ('%{$word}%')'u AGAINST ('{$word}') olarak değiştirin ve yardımcı olup olmadığına bakın.

Ayrıca fulltext Aynı anda birden fazla kelime eşleşebilir, bu yüzden her kelime için bütün MATCH maddesini tekrar etmeye gerek yoktur. Bunun yerine kelimelerin serisi ifade ise ilk MATCH fıkrada gösterildiği gibi, boolean fulltext modunu kullanarak durdurmak ve doğal dil modunu kullanmak isteyebilir

SELECT *,MATCH (CUIT,DENOMINACION) AGAINST ('word word word word') ... 

deneyin.

fulltext yüz az birkaç satır ile, küçük masalarda gerçekten çok garip işler unutmayın

. Bu, küçük masalarda test yapmayı zorlaştırıyor.

Son olarak, fulltext indeksi doğru inşa emin olun.