首页 新闻 会员 周边 捐助

为什么有limit 1 之后,查询速度会快一倍?Sending data 到底是什么意思

0
[已解决问题] 解决于 2020-07-15 15:23

两条SQL, 为什么增加一个LIMIT 1,会提高近一倍的速度?

SELECT * FROM test_user WHERE username = '500000';
SELECT * FROM test_user WHERE username = '500000' LIMIT 1 ;

耗时分别是: 0.814s 和 0.407s,

注,test_user 总数据量是100w,表结构如下

CREATE TABLE test_user (
id BIGINT(20) PRIMARY KEY NOT NULL autoincrement ,
username VARCHAR(11) DEFAULT NULL,
gender VARCHAR(2) DEFAULT NULL,
PASSWORD VARCHAR(100) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;

如图:

后者的图示:

我的解释是:

500000,即50w 刚好是总数据量100w的一半,limit 1 指示mysql 查询到一行即返回, 而没有limit 的情况下,会进行全表扫描!! 所以说,如果,能够确定结果只有一行,或者只需要一行数据,可以增加个 limit !

但是观察发现,executing的时间, 及其他的时间都是差不多的,差别最大的时间是: Sending data,但是Bytes_sent 却是几乎一样的, why?

CanntBelieve的主页 CanntBelieve | 初学一级 | 园豆:34
提问于:2020-07-13 15:47
< >
分享
最佳答案
0

请问你用的什么数据库连接工具呢?我用 navicat 15 版本的,没发现有这个概况和状态

奖励园豆:5
知音12138 | 初学一级 |园豆:176 | 2020-07-15 15:20

你可能没有看懂我的意思,跟这个无关

CanntBelieve | 园豆:34 (初学一级) | 2020-07-15 15:23

@CanntBelieve: 就是想简单请问下你用的什么数据库工具

知音12138 | 园豆:176 (初学一级) | 2020-07-15 15:28
其他回答(2)
0

感觉有点鸡肋啊,什么时候能确定只有一行,不就是根据主键查询的时候么

轻红 | 园豆:208 (菜鸟二级) | 2020-07-15 14:48

你可能没有看懂我的意思

支持(0) 反对(0) CanntBelieve | 园豆:34 (初学一级) | 2020-07-15 15:22
0

Bytes_sent是实际发送的字节数,而Sending data中包含了读取、处理、发送几个环节所以时间差别就在‘处理’环节上

tor2 | 园豆:244 (菜鸟二级) | 2020-07-15 22:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册