Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql中加速这个Select Distinct查询_Mysql_Sql - Fatal编程技术网

如何在mysql中加速这个Select Distinct查询

如何在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

我在一个网站中实现了一个自动完成字段,我的端点查询mysql以获取数据。此特定字段只能从数据库“列表”中检索,该列表包含大约600000个条目,其中只有4000个条目是唯一的。大约每天添加一次新的唯一列表项。 我使用的是这样一个调用,其中查询是用户在“自动完成”框中开始键入的内容:

SELECT DISTINCT item FROM list WHERE item like '%query%' LIMIT 10;
这个查询大约需要0.8毫秒,我相信大部分时间都是由于SELECT DISTINCT。有没有办法提高这项任务的性能?
我可以创建新的表/视图,但我不确定有什么帮助。

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

想象一下一个带有字母标签的通讯簿,如果我在寻找
'Mads%'
,我可以用手指指向字母
m
,然后从那里开始阅读,但是如果我在寻找
'%dse%'
,我必须阅读每个条目

  • 如果可以,您应该在字符串的开头删除百分号,在这种情况下,将使用
    上的索引(请确保添加它,如果它是长字段,您还可以索引字段的一部分)
  • 否则,您应该使用

除非您提供更多信息,否则您只是在问如何让我的无人驾驶汽车跑得更快。请发布以下结果:explain extended SELECT DISTINCT item FROM list,其中类似“%query%”的项限制为10;show warnings我不知道这个查询在MySQL中会表现出什么行为,但是如果存在
item
上的索引,它可以更快地得到响应-它只需要扫描4000个条目,而不是600000个条目。