假设我在MySQL数据库表中有以下值:
a
ab
abc
abcd我正在寻找一种快速的方法来检索作为我输入的前缀的所有值。显然,这是可行的:
SELECT * FROM table WHERE 'abcde12345' LIKE CONCAT(col, '%');在大型数据集上,...but的速度非常慢。有没有更智能的存储数据的方法来实现快速查找?
发布于 2017-04-08 13:10:55
这可能会有所帮助,INDEX(col)也是如此
SELECT *
FROM table
WHERE col BETWEEN 'a' AND 'abcde12345'
AND 'abcde12345' LIKE CONCAT(col, '%');这更有可能是:
SELECT *
FROM table
WHERE col IN ('a', 'ab', 'abc', ..., 'abcde12345');后一个版本可以用'abcde12345'中的代码构造,或者(更痛苦的是)在存储过程中构造。
https://stackoverflow.com/questions/43281040
复制相似问题