Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.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中搜索结果为零时查询速度慢?_Mysql_Database - Fatal编程技术网

为什么在mysql中搜索结果为零时查询速度慢?

为什么在mysql中搜索结果为零时查询速度慢?,mysql,database,Mysql,Database,我不明白为什么如果我有一个查询,从一个包含8.000.000条记录的表中检索结果需要00015秒,那么当搜索结果为零时,同样的查询需要大约10秒。 我有一个类似于索引(a、B、C)的复合索引,我的查询类似于: select * from table where A = 'string' AND (B LIKE '%sstring1%' OR strcmp(soundex(B),soundex('string1')) = 0) AND (C LIKE '%string2%'

我不明白为什么如果我有一个查询,从一个包含8.000.000条记录的表中检索结果需要00015秒,那么当搜索结果为零时,同样的查询需要大约10秒。 我有一个类似于索引(a、B、C)的复合索引,我的查询类似于:

select * from table where A = 'string' AND 
    (B LIKE '%sstring1%' OR strcmp(soundex(B),soundex('string1')) = 0) AND (C LIKE '%string2%' 
      OR strcmp(soundex(B),soundex('string1')) = 0)
如果结果找到某个东西,大约需要0.0015,但是如果结果为零,则需要10秒,这对于我来说太长了。这种行为的原因是什么?我如何解决它


提前感谢您的回答或建议。

请尝试
解释
以了解索引的实际使用情况。我使用了解释,无论我是否找到了什么,它对这两种情况的说明都非常相似。使用了索引,而且所涉及的行数相似。我可以做些什么来了解更多信息?我首先要简化查询。有一件事让找不到任何东西变得很慢,那就是你必须尝试所有的术语。因此,请分别尝试这4个术语中的每一个,找出哪一个是慢的(以及这两种情况下是慢的还是不匹配的情况)。在mysql文档中搜索时,我发现我的查询中存在很多问题:首先,对于strcmp或soundex,我不能使用索引,而对于以%开头的类似形式,则不使用索引。如果A是错的,我可以在0.008秒内得到一个结果,否则研究必须通过所有条款。我正计划更改查询并从头开始。您可以做的一件事是,将soundex值作为额外列存储在表中,这样它们可以被索引,您可以更快地搜索它们。