首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL慢速查询:如何优化以下查询?

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

Stack Overflow用户
提问于 2016-05-27 15:17:22
回答 1查看 61关注 0票数 1

下面是我使用的查询:

代码语言:javascript
复制
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秒内执行。

请解释一下“使用where;使用文件”,这样我就可以知道它没有使用索引。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 15:25:56

不,它没有使用索引。

为此,你必须与“word1 1%”、“Word2%”等进行比较。但当你一开始使用这个玩笑时就不起作用了。

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37487041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档