为什么有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

回到顶部