如何在mysql中加速这个Select Distinct查询
我在一个网站中实现了一个自动完成字段,我的端点查询mysql以获取数据。此特定字段只能从数据库“列表”中检索,该列表包含大约600000个条目,其中只有4000个条目是唯一的。大约每天添加一次新的唯一列表项。 我使用的是这样一个调用,其中查询是用户在“自动完成”框中开始键入的内容:如何在mysql中加速这个Select Distinct查询,mysql,sql,Mysql,Sql,我在一个网站中实现了一个自动完成字段,我的端点查询mysql以获取数据。此特定字段只能从数据库“列表”中检索,该列表包含大约600000个条目,其中只有4000个条目是唯一的。大约每天添加一次新的唯一列表项。 我使用的是这样一个调用,其中查询是用户在“自动完成”框中开始键入的内容: SELECT DISTINCT item FROM list WHERE item like '%query%' LIMIT 10; 这个查询大约需要0.8毫秒,我相信大部分时间都是由于SELECT DISTINC
SELECT DISTINCT item FROM list WHERE item like '%query%' LIMIT 10;
这个查询大约需要0.8毫秒,我相信大部分时间都是由于SELECT DISTINCT。有没有办法提高这项任务的性能?
我可以创建新的表/视图,但我不确定有什么帮助。当您在查询开头使用%符号时,将不使用索引,并且无论索引看起来如何,表中的每一行都将被扫描 想象一下一个带有字母标签的通讯簿,如果我在寻找
'Mads%'
,我可以用手指指向字母m
,然后从那里开始阅读,但是如果我在寻找'%dse%'
,我必须阅读每个条目
- 如果可以,您应该在字符串的开头删除百分号,在这种情况下,将使用
上的索引(请确保添加它,如果它是长字段,您还可以索引字段的一部分)项
- 否则,您应该使用
item
上的索引,它可以更快地得到响应-它只需要扫描4000个条目,而不是600000个条目。