我正在构建一个由PHP脚本驱动的MySQL电影海报/粉丝艺术数据库。我创建了一个自动完成输入字段,用户在该字段中搜索电影标题。与所有自动填充字段一样,当用户开始输入电影标题时,会显示。
现在MySQL查询如下:
SELECT posters FROM pictures WHERE pictures LIKE '$text%'
上述模式匹配以键入的字母开头的每个电影标题。由于dartabase包含aprox 10.000电影标题,因此当用户键入第一个字母时,自动完成功能会有延迟。为了加速自动完成功能中的搜索查询,我想使用一种模式,该模式至少匹配字符串中的两个(或更多)字母,而不仅仅是在字符串的开头。 例如,如果用户键入:
'pie'
自动完成功能应显示:
'American pie'
'American pie 2'
使用MySQL通配符'_'(下划线)没有帮助。有没有一种方法可以为自动完成功能提供此功能?
谢谢
答案 0 :(得分:5)
SELECT posters FROM pictures WHERE pictures LIKE '%{$text}%'
答案 1 :(得分:2)
SELECT posters FROM pictures WHERE LENGTH('{$text}') > 1 AND pictures LIKE '%{$text}%'
如果第一次检查失败,mysql是聪明的,不会尝试每一行
还有这种类型的字段/查询的长度帮助索引,例如,使长度为2,长度为5,其余为1(如果不是太大)