【问题标题】:Getting query to hit index - search for prefix of string获取查询以命中索引 - 搜索字符串的前缀
【发布时间】:2012-07-25 09:35:11
【问题描述】:

我正在尝试让查询命中索引。

场景是这样的:

给定一个字符串 - 查找列 'str' 是该字符串的子字符串的所有行

我尝试过类似的方法:

SELECT str FROM tbl WHERE 'fullstring' LIKE CONCAT(str, '%');

但是 - 这不会命中我在使用 EXPLAIN EXTENDED 检查查询时创建的索引。

在最坏的情况下,我可以通过使用嵌套集稍微改造数据库来解决这个问题 - 但我真的很想不必走那条路。

【问题讨论】:

  • 你会发布解释计划吗?

标签: mysql performance indexing


【解决方案1】:

它应该使用索引。如果您的 MySQL 优化器没有选择正确的索引,那么您可以尝试使用 FORCE KEY 尝试:

SELECT str FROM tbl FORCE KEY(index_name) WHERE 'fullstring' LIKE CONCAT(str, '%');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    相关资源
    最近更新 更多