如何加快mysql中的Select Distinct查询速度

时间:2011-10-15 03:04:18

标签: mysql sql

我正在网站中实现自动填充字段,我的端点查询mysql以获取数据。此特定字段只能从具有大约600,000个条目的数据库“列表”中检索,其中只有4000个条目是唯一的。每天大约一天,将添加一个新的唯一列表项。 我正在使用这样的调用,其中查询是用户在自动完成框中输入的内容:

SELECT DISTINCT item FROM list WHERE item like '%query%' LIMIT 10;

这个查询大约需要0.8毫秒,大部分时间都是由SELECT DISTINCT引起的,我相信。有没有办法提高这项任务的表现? 我可以创建新的表/视图,但我不确定它会有什么帮助。

1 个答案:

答案 0 :(得分:2)

当您在LIKE查询的开头使用%符号时,将不使用索引,并且无论索引如何,都将扫描表格的每一行。

想一下带有字母标签的地址簿,如果我正在寻找'Mads%',我可以指着字母M并从那里读取,但如果我寻找{{1}我要阅读每个条目。

  • 如果可以,你应该在字符串的开头删除百分号,在这种情况下,将使用'%dse%'上的索引(确保添加它,你也可以索引字段的一部分)这是一个很长的领域。)
  • 否则,您应该使用full text search代替。