Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/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
对1个表和2个字段执行缓慢的MySQL查询_Mysql_Sql - Fatal编程技术网

对1个表和2个字段执行缓慢的MySQL查询

对1个表和2个字段执行缓慢的MySQL查询,mysql,sql,Mysql,Sql,我有以下疑问: SELECT id FROM gr_webimages; (~0.0040 sec, 500 records) SELECT id, parents FROM gr_webimages; (~0.0450 sec, 500 records) 正如您所看到的,唯一的区别是“parents”字段是varchar(255)类型。 (“id”int(10)主键) 第二个查询的速度要慢10倍以上,并且服务器不使用任何索引。 有人能解释一下为什么需要这么长时间,以及我如何加快查询速度吗

我有以下疑问:

SELECT id FROM gr_webimages; (~0.0040 sec, 500 records)

SELECT id, parents FROM gr_webimages;  (~0.0450 sec, 500 records)
正如您所看到的,唯一的区别是“parents”字段是varchar(255)类型。 (“id”int(10)主键) 第二个查询的速度要慢10倍以上,并且服务器不使用任何索引。
有人能解释一下为什么需要这么长时间,以及我如何加快查询速度吗?

第一个查询实际上可以运行,甚至不需要触摸表。。。它需要的所有信息都可以在主键索引中找到,因此它只需在索引中运行即可获得它需要的信息。第二个查询实际上必须从表中读取,这是一个大得多的读取

请看这里:


“如果查询仅选择索引列,则查询可以直接从索引中读取索引列值,而不是从表中读取。”

第一个查询实际上可以运行,甚至不必触摸表。。。它需要的所有信息都可以在主键索引中找到,因此它只需在索引中运行即可获得它需要的信息。第二个查询实际上必须从表中读取,这是一个大得多的读取

请看这里:


“如果查询仅选择索引列,则查询可以直接从索引中读取索引列值,而不是从表中读取。”

第一个查询实际上可以运行,甚至不必触摸表。。。它需要的所有信息都可以在主键索引中找到,因此它只需在索引中运行即可获得它需要的信息。第二个查询实际上必须从表中读取,这是一个大得多的读取

请看这里:


“如果查询仅选择索引列,则查询可以直接从索引中读取索引列值,而不是从表中读取。”

第一个查询实际上可以运行,甚至不必触摸表。。。它需要的所有信息都可以在主键索引中找到,因此它只需在索引中运行即可获得它需要的信息。第二个查询实际上必须从表中读取,这是一个大得多的读取

请看这里:



“如果查询仅选择索引列,则查询可以直接从索引中读取索引列值,而不是从表中读取。”

是否确定对于第一个查询,优化器没有使用索引?是否可以发布两个计划?在
id,parents
上添加索引应该会有所帮助。。。。澄清一下,@dasblinkenlight表示两列上的复合索引。哇!“身份证,父母”索引在这里创造了奇迹!0.0005秒!我太激动了!谢谢@dasblinkenlight,如果你在这里发布你的答案,我会马上接受。没关系,你有一个非常好的答案可以在这里接受-约翰在我的评论之前发布了,他说了基本相同的话。祝你的项目好运!您确定对于第一个查询,优化器没有使用索引吗?您可以发布两个计划吗?在
id,parents
上添加索引应该会有帮助。。。。澄清一下,@dasblinkenlight表示两列上的复合索引。哇!“身份证,父母”索引在这里创造了奇迹!0.0005秒!我太激动了!谢谢@dasblinkenlight,如果你在这里发布你的答案,我会马上接受。没关系,你有一个非常好的答案可以在这里接受-约翰在我的评论之前发布了,他说了基本相同的话。祝你的项目好运!您确定对于第一个查询,优化器没有使用索引吗?您可以发布两个计划吗?在
id,parents
上添加索引应该会有帮助。。。。澄清一下,@dasblinkenlight表示两列上的复合索引。哇!“身份证,父母”索引在这里创造了奇迹!0.0005秒!我太激动了!谢谢@dasblinkenlight,如果你在这里发布你的答案,我会马上接受。没关系,你有一个非常好的答案可以在这里接受-约翰在我的评论之前发布了,他说了基本相同的话。祝你的项目好运!您确定对于第一个查询,优化器没有使用索引吗?您可以发布两个计划吗?在
id,parents
上添加索引应该会有帮助。。。。澄清一下,@dasblinkenlight表示两列上的复合索引。哇!“身份证,父母”索引在这里创造了奇迹!0.0005秒!我太激动了!谢谢@dasblinkenlight,如果你在这里发布你的答案,我会马上接受。没关系,你有一个非常好的答案可以在这里接受-约翰在我的评论之前发布了,他说了基本相同的话。祝你的项目好运!你是怎么知道索引的?。我的意思是,这可能是正确的答案,但问题是服务器没有使用任何索引,这就是为什么我要求澄清主键在定义上是一个索引,不是吗?我错过了问题的这一部分(但我也不确定MySQL实际上是如何处理主键的),你很可能是对的,这个索引对我来说是一个真正的死区:)你怎么知道索引的?。我的意思是,这可能是正确的答案,但问题是服务器没有使用任何索引,这就是为什么我要求澄清主键在定义上是一个索引,不是吗?我错过了问题的这一部分(但我也不确定MySQL实际上是如何处理主键的),你很可能是对的,这个索引对我来说是一个真正的死区:)你怎么知道索引的?。我的意思是,这可能是正确的答案,但问题是服务器没有使用任何索引,这就是为什么我要求澄清主键在定义上是一个索引,不是吗?我错过了问题的这一部分(但我也不确定MySQL实际上是如何处理主键的),你很可能是对的,这个索引对我来说是一个真正的死区:)你怎么知道索引的?。我的意思是,这可能是正确的答案,但问题是服务器没有使用任何索引,这就是为什么我要求澄清主键定义为索引,不是吗?我错过了问题的这一部分(但我很抱歉)