gpt4 book ai didi

针对慢查询的 SQL 匹配

转载 作者:行者123 更新时间:2023-11-29 14:57:26 25 4
gpt4 key购买 nike

我有一个包含 2+ 百万(行)产品和 44 个字段(列)的表。我正在尝试根据“NAME”字段(varchar 160)查询此表,我在该字段上有全文索引。

这是当前使用三个单词 $keyword 执行的查询,需要 71.34 秒,两个单词 $keyword 需要 62.47 秒,单个单词 $keyword 需要 0.017 秒。

SELECT ID,
MATCH(NAME) AGAINST ('$keyword') as Relevance,
MANUFACTURER,
ADVERTISERCATEGORY,
THIRDPARTYCATEGORY,
DESCRIPTION,
AID,
SALEPRICE,
RETAILPRICE,
PRICE,
SKU,
BUYURL,
IMAGEURL,
NAME,
PROGRAMNAME
FROM products
WHERE MATCH(NAME) AGAINST ('$keyword' IN BOOLEAN MODE)
GROUP BY NAME
HAVING Relevance > 6
ORDER BY Relevance DESC LIMIT 24

如何优化此查询,以便在 2 个以上单词的 $keyword 查询上获得更好的性能?

最佳答案

但是,这可能不是您正在寻找的答案:

对于这么大的表,全文搜索永远不会很快。我建议研究像 Sphinx 这样的全文引擎.

作为一个额外的好处,您还可以在 Sphinx 中进行相关性匹配,因为它将返回按相关性顺序排列的结果。一旦 Sphinx 返回匹配的 ID,您就可以在查询的 WHERE 子句中使用 IN 语句并选择您需要的其他数据。

我还建议研究 Sphinx 的扩展查询语法,因为这可以让您在邻近性和词序等方面匹配多个单词。

关于针对慢查询的 SQL 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4235268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com