4

在 MySQL 中进行如下搜索:

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

即使对 LIKE 的列进行索引,速度也很慢。有什么技术可以加快速度吗?

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

  1. 创建一个新列,将相关列颠倒过来。所以华盛顿 => notgnihsaW AND Jefferson => nosreffeJ

  2. 当您想要执行 LIKE '%ton' 搜索时,反转您的后缀,例如 ton > not,然后在您的新列上执行 LIKE 'not%' 搜索。

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

4

1 回答 1

1

您已经为后缀匹配提出了一个出色的解决方案……存储一个反向列并将其用于反向前缀匹配。我已经这样做了,它确实工作得很好。

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

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

于 2014-06-03T17:24:41.533 回答