为什么有limit 1 之后,查询速度会快一倍?Sending data 到底是什么意思
两条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?
回答
请问你用的什么数据库连接工具呢?我用 navicat 15 版本的,没发现有这个概况和状态
以上是 为什么有limit 1 之后,查询速度会快一倍?Sending data 到底是什么意思 的全部内容, 来源链接: utcz.com/a/32687.html