MySql limit性能测试
测试环境
数据库:Mysql 5.6
测试工具:Navicat Premium 11.1.13
数据量:200万
表名:bt1
表结构:
-- ---------------------------- -- Table structure for tb1 -- ---------------------------- DROP TABLE IF EXISTS `tb1`; CREATE TABLE `tb1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `createdOn` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`), KEY `i_name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=2000001 DEFAULT CHARSET=utf8;
测试结果:
[SQL]SELECT id FROM tb1 LIMIT 1000000, 100; 受影响的行: 0 时间: 0.260s [SQL] SELECT * FROM tb1 LIMIT 1000000, 100; 受影响的行: 0 时间: 0.556s [SQL] SELECT * FROM tb1 WHERE id IN ( SELECT id FROM ( SELECT id FROM tb1 LIMIT 1000000, 100 ) DATA ); 受影响的行: 0 时间: 1.640s [SQL] SELECT tb1.* FROM tb1 INNER JOIN ( SELECT id FROM tb1 LIMIT 1000000, 100 ) DATA WHERE tb1.id = `data`.id; 受影响的行: 0 时间: 0.250s
结语:inner join 效率高于子查询in;用主键分页后在根据主键查询的效率比直接select * 查询效率要高。

浙公网安备 33010602011771号