2

将 MySQL 与一个非常大的表(数百万个条目)一起使用,我需要根据其(索引)字段之一中最右边的 6 个字母找到一行。

我试过使用:SELECT * FROM 'users' WHERE field LIKE '%abcdef'

SELECT * FROM 'users' WHERE RIGHT(field,6) = 'abcdef'

这两个查询大约需要 8.5 秒才能完成。作为比较,如果我对整个字段使用 = 运算符,则需要 0.15 秒。

我现在唯一想到的想法是在包含字段最右边的 6 个字母的表中创建一个额外的索引列,并使用 = 运算符来对付它。

任何更优雅的建议将不胜感激。

谢谢 :)

4

1 回答 1

4

我现在唯一想到的想法是在包含字段最右边的 6 个字母的表中创建一个额外的索引列,并使用 = 运算符来对付它。

这正是在 MySQL 中执行此操作的方法。

不幸的是 MySQL 还不支持表达式索引视图的索引,所以你必须按照你建议的方式去做。

有关的

于 2012-05-20T11:44:44.457 回答