0
可以說我有一個MySQL數據庫表以下值:Mysql反向模式匹配 - 替代?
a
ab
abc
abcd
我正在尋找一個快速的方法來檢索是我輸入的前綴的所有值。顯然這是有效的:
SELECT * FROM table WHERE 'abcde12345' LIKE CONCAT(col, '%');
...但在大型數據集上速度很慢。 有沒有更聰明的方法來存儲數據以實現快速查找?
可以說我有一個MySQL數據庫表以下值:Mysql反向模式匹配 - 替代?
a
ab
abc
abcd
我正在尋找一個快速的方法來檢索是我輸入的前綴的所有值。顯然這是有效的:
SELECT * FROM table WHERE 'abcde12345' LIKE CONCAT(col, '%');
...但在大型數據集上速度很慢。 有沒有更聰明的方法來存儲數據以實現快速查找?
這威力的幫助下,與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'
,或者(更痛苦)在一個存儲過程中。
所以在這種情況下,你的輸入是'abcde12345',你的結果應該是'{a ab,abc,abcd}'? –
@JuanCarlosOropeza! – jvataman
你可以試試Willem的建議,你是否爲'col'創建索引? –