繁体   English   中英

MySQL慢查询:如何优化以下查询?

[英]MySQL Slow Query: How to optimize the following query?

以下是我正在使用的查询:

SELECT *
FROM (
    SELECT 
        (
            CASE WHEN product_name like '%word1%' THEN 1 ELSE 0 END +
            CASE WHEN product_name like '%word2%' THEN 1 ELSE 0 END +
            CASE WHEN product_name like '%word3%' THEN 1 ELSE 0 END
        ) AS numMatches
    FROM products as p 
   ) as derived
WHERE numMatches > 0
ORDER BY numMatches DESC
LIMIT 30,10

我在product_name上添加了一个索引(BTREE),该列中有300万条记录,查询在3-5秒内执行。

解释说:“在哪里使用; 使用filesort',这样我可以弄清楚它不使用索引。

不,它没有使用索引。

为此,您必须将其与“ word1%”,“ word2%”等进行比较。但是,当您一开始使用小丑时,它就不起作用。

但是,如果您的mysql版本相对较新,则可以使用全文索引,这将为您的查询服务。

https://dev.mysql.com/doc/refman/5.6/en/innodb-fulltext-index.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM