我正在建立一个由MySQL脚本驱动的PHP电影海报/粉丝艺术数据库。我创建了一个自动完成输入字段,用户可以在其中搜索电影标题。就像所有的自动完成字段一样,当用户开始键入电影标题时,就会显示出来。
现在,MySQL查询如下:
SELECT posters FROM pictures WHERE pictures LIKE '$text%'上面的模式匹配以键入的字母开头的每个电影标题。由于数据库包含大约10.000个电影标题,因此当用户键入第一个字母时,自动补全功能会有延迟。为了加快自动完成功能中的搜索查询速度,我希望使用一个模式来匹配字符串中的至少两个(或更多)字母,而不仅仅是字符串开头的字母。例如,如果用户键入:
'pie' 自动完成功能应显示:
'American pie'
'American pie 2'使用MySQL通配符'_‘(下划线)无济于事。有没有一种方法可以给自动补全功能提供这个功能?
谢谢
发布于 2011-11-14 22:12:07
SELECT posters FROM pictures WHERE LENGTH('{$text}') > 1 AND pictures LIKE '%{$text}%' mysql足够聪明,不会在第一次检查失败时尝试每一行
同样,带有长度的索引对这种类型的字段/查询也有帮助,例如,将一个长度设置为2,一个设置为长度5,另一个用于其他字段/查询(如果不太大的话)
发布于 2011-11-14 21:54:17
SELECT posters FROM pictures WHERE pictures LIKE '%{$text}%' https://stackoverflow.com/questions/8122583
复制相似问题