假设我在MySQL数据库表中有以下值:
a
ab
abc
abcd
我正在寻找一种快速方法来检索作为输入前缀的所有值。显然这有效:
SELECT * FROM table WHERE 'abcde12345' LIKE CONCAT(col, '%');
...但是在大型数据集上非常慢。 是否有更智能的方法来存储数据以实现快速查找?
答案 0 :(得分:0)
此可能帮助,以及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'
中的代码构建,或者(更痛苦地)在存储过程中构建。