比较快'%XXX'

时间:2014-06-03 17:19:52

标签: mysql indexing sql-like database-optimization

在MySQL中进行搜索:

SELECT * FROM people WHERE surname LIKE '%ton';

即使受LIKE约束的列被索引,也很慢。 有没有加速这项工作的技巧?

我能想到的最好的主意是:

  1. 创建一个新列,使相关列反转。华盛顿=> notgnihsaW和Jefferson => nosreffeJ

  2. 当您想要执行LIKE'%ton'搜索,反转你的后缀,例如吨>不要然后执行LIKE' not%'搜索新专栏。

  3. 这是一个简单的解决方案,但每当您添加新数据时都需要重新编译反向列。

1 个答案:

答案 0 :(得分:1)

您已经为后缀匹配提出了一个很好的解决方案...存储一个反向列并将其用于反向前缀匹配。我做到了这一点,确实非常有效。

您似乎正在寻找像Harrington,Carlton,Milton等姓氏的人。

如果这是正确的那么FULLTEXT不是一个好的解决方案;它不会产生部分词干。