关于mysql的limit语句优化后与优化前没有区别的疑问
大家好,小弟最近在看《高性能mysql一书》,其中看到该书上一个关于优化limit查询的sql语句写法,于是便跃跃欲试建了张测试表,然后往里面插入了一百多万条数据,下面是我测试的三条sql语句:
①最普通的写法
select * from test2 limit 1000000, 100;
②《高性能mysql》一书的写法:
select *
from (select no from test2 limit 1000000, 100) as A natural join test2
③网上一些教程的写法:
select *
from no >=
(select no from test2 order by no limit 1000000,1)
limit 100
然而最终结果却让我有点失望,后两条语句在navicat上手动执行并没有比第一条快,①和③的执行时间都是二点多秒,而②则夸张的去到了四点多秒,而且重复了很多次都是一样的结果。之后想想觉得可能是软件的耗时数据不准确,于是又打开Apache jmeter进行jdbc测试,开10个线程每个线程执行100次,可是最终结果依然很让人困惑,②语句没有像之前那么夸张落后那么多了,可是三条语句的平均耗时、耗时中位数以及每秒操作次数都没太大差别(甚至第①条还略微领先一丢丢),这完全不像书上以及网上教程说得那样“大大提高查询性能”啊,请问一下各位是我的测试方法有问题还是?