我正在构建一个由PHP脚本驱动的MySQL电影海报/粉丝艺术数据库。我创建了一个自动完成输入字段,用户可以在其中搜索电影标题。就像所有自动完成字段一样,当用户开始键入电影标题时,就会显示出来。
现在MySQL查询如下:
SELECT posters FROM pictures WHERE pictures LIKE '$text%'
上面的模式匹配每个以键入的字母开头的电影标题。由于dartabase包含大约10000个电影标题,当用户键入第一个字母时,自动完成功能会延迟。为了加快自动完成函数中的搜索查询速度,我希望使用一个模式,该模式至少匹配字符串中的两个(或更多(字母,而不仅仅是字符串的开头。例如,如果用户键入:
'pie'
自动完成功能应显示:
'American pie'
'American pie 2'
使用MySQL通配符"_"(下划线(没有帮助。有没有一种方法可以赋予自动完成功能这个功能?
感谢
SELECT posters FROM pictures WHERE pictures LIKE '%{$text}%'
SELECT posters FROM pictures WHERE LENGTH('{$text}') > 1 AND pictures LIKE '%{$text}%'
如果第一次检查失败,mysql不会尝试每一行
长度索引也有助于处理这种类型的字段/查询,例如,使长度为2的一个和长度为5的一个以及其余的一个(如果不是太大的话(