【问题标题】:log-queries-not-using-indexes and LIKE in MySQLMySQL 中的 log-queries-not-using-indexes 和 LIKE
【发布时间】:2011-02-09 11:49:38
【问题描述】:

我在 MySQL 中启用了这个“log-queries-not-using-indexes”。我有一个由 MySQL 记录的查询,即不使用索引的查询。问题是这个查询使用 LIKE 来表示例如

category like '%fashion%'

如果我删除 LIKE 或将其更改为

category = 'fashion'

然后它说它正在使用索引。

所以当我们在查询中使用 LIKE 时,MySQL 无论如何都会将其记录为不使用索引?

谢谢

【问题讨论】:

    标签: mysql join logging indexing sql-like


    【解决方案1】:

    使用像%fashion% 这样的子句永远不会使用常规索引。如果您想进行这种搜索,您需要一个全文索引。

    请记住,varchar 索引字符串的第一部分。因此,如果您在字符串的 any 部分搜索 fashion 的出现,那么索引将无法提高性能,因为您需要搜索每个字符串。

    但是,如果您只搜索这样的第一部分:

    select * from table where field like 'fashion%'
    

    然后可以使用索引并且可能会有所帮助。

    【讨论】:

    • 我已经尝试在“类别”字段中使用“全文”索引,但没有成功。
    猜你喜欢
    • 2013-07-07
    • 2019-11-23
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多