我的代码搜索速度很慢

时间:2016-04-08 23:20:13

标签: php mysql performance search full-text-search

这是我的代码:

$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";
}

这很慢。我怎样才能提高速度?

1 个答案:

答案 0 :(得分:1)

在FULLTEXT搜索中使用LIKE样式的通配符字符串%没有意义。因此,请将AGAINST ('%{$word}%')更改为AGAINST ('{$word}')并查看是否有帮助。

此外,FULLTEXT可以同时匹配多个单词,因此不需要为每个单词重复整个MATCH子句。而是尝试

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

如果单词系列是一个短语,您可以停止使用布尔FULLTEXT模式并使用自然语言模式,如第一个MATCH子句所示。

请注意,FULLTEXT在小表上确实非常奇怪,只有不到几百行。这使得对小桌子的测试变得困难。

最后,确保正确构造了FULLTEXT索引。