mysql中limit的效率问题
limit 效率问题
limit 是由mysql 的 server 层实现的。
⼀、如何⽤limit提升查询性能:
select * from T where login_name = 'XXX‘mysql中select
如果 T.login_name 没有建⽴索引,则上⾯的查询语句会全表扫描。
select * from T where login_name = 'XXXX' limit 1
如果加上limit 1 当扫描到⼀条的数据的时候则不会再继续扫描,效率会⼤⼤的提⾼。
⼆、limit 低效率的情况:
在⼀种情况下 limit 效率⾮常低,只使⽤limit来查询的语句,并且偏移量特别⼤的情况。
例如:select * from table limit 15000000,1000;
select * from table while id>=150000 limit 1000;
  语句1为0.2077秒;语句2为0.0063秒
  两条语句的时间⽐是:语句1/语句2=32.968
⽐较以上的数据时,我们可以发现采⽤性能基本稳定,受偏移量和⾏数的影响不⼤,⽽单纯采⽤limit的话,受偏移量的影响很⼤,当偏移量⼤到⼀定值后性能开始⼤幅下降。不过在数据量不⼤的情况下,两者的区别不⼤。
所以应当先使⽤where等查询语句,配合limit使⽤,效率才⾼