我有一个单词表:
CREATE TABLE `wordlist` (
`id` int(11) not null auto_increment,
`word` varchar(255) not null,
PRIMARY KEY(`id`)
);
有很多(数千)这样的条目:
| 1 | foo |
| 2 | bar |
| 3 | xyz |
我有一个输入文字Hello xyz, test me barhaha
- 这应该从表中获得xyz
和bar
。文本可以是几千字节长。
天真的解决方案是:
SET @text = 'Hello xyz, test me barhaha';
SELECT * FROM `wordlist` WHERE @text LIKE CONCAT('%', `word`, '%');
它不使用索引,LOCATE()/INSTR()
也不会,并执行全表扫描。有没有办法加速这种搜索,理想情况下使用索引?
任何建议都将受到赞赏。