我正在网站中实现自动填充字段,我的端点查询mysql以获取数据。此特定字段只能从具有大约600,000个条目的数据库“列表”中检索,其中只有4000个条目是唯一的。每天大约一天,将添加一个新的唯一列表项。 我正在使用这样的调用,其中查询是用户在自动完成框中输入的内容:
SELECT DISTINCT item FROM list WHERE item like '%query%' LIMIT 10;
这个查询大约需要0.8毫秒,大部分时间都是由SELECT DISTINCT引起的,我相信。有没有办法提高这项任务的表现? 我可以创建新的表/视图,但我不确定它会有什么帮助。
答案 0 :(得分:2)
当您在LIKE查询的开头使用%符号时,将不使用索引,并且无论索引如何,都将扫描表格的每一行。
想一下带有字母标签的地址簿,如果我正在寻找'Mads%'
,我可以指着字母M
并从那里读取,但如果我寻找{{1}我要阅读每个条目。
'%dse%'
上的索引(确保添加它,你也可以索引字段的一部分)这是一个很长的领域。)