【问题标题】:My code search is really slow我的代码搜索真的很慢
【发布时间】:2016-04-08 23:20:12
【问题描述】:

这是我的代码:

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

速度很慢。如何提高速度?

【问题讨论】:

  • 您使用什么语言进行此搜索?这里没有标记。如果您想更快地搜索任意数据,请尝试使用full text search features

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


【解决方案1】:

在全文搜索中使用LIKE 样式的通配符字符串% 没有意义。所以,将AGAINST ('%{$word}%') 更改为AGAINST ('{$word}') 看看是否有帮助。

此外,FULLTEXT 可以一次匹配多个单词,因此无需为每个单词重复整个 MATCH 子句。而是尝试

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

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

请注意,FULLTEXT 在少于几百行的小表上确实非常奇怪。这使得在小表上进行测试变得困难。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    相关资源
    最近更新 更多