MySQL数据库中关于limit效率的研究_手机数据清除后

日期:2014-07-13 / 人气: / 来源:网络

      LIMIT用来返回SELECT语句的行数。LIMIT取1个或2个数字参数,如果给定2个参数,第一个指定要返回的第一行的偏移量,第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。
      LIMIT在可以很方便的返回所需的数据,数据量小(10W以下)时,效率这方面不会有太大的问题,但数据量一大就会导致性能的下降。下面是我的测试数据:都是在20W条记录的数据表中运行
      实验1
      语句1:
                select * from table limit 150000,200;
      语句2:
                select * from table while id>=150000 limit 200;
      语句1为0.2026秒;语句2为0.0015 秒
      两条语句的时间比是:语句1/语句2=135.0667
  实验2
      语句1:
                select * from table limit 10000,200;
      语句2:
                select * from table while id>=10000 limit 200;
      语句1为0.0167秒;语句2为0.0018秒
      两条语句的时间比是:语句1/语句2=9.28
    实验3
      语句1:
                select * from table limit 1,200;
      语句2:
                select * from table while id>=1 limit 200;
      语句1为0.0034秒;语句2为0.0017 秒
      两条语句的时间比是:语句1/语句2=2
    实验4
      语句1:
                select * from table limit 150000,1000;
      语句2:
                select * from table while id>=150000 limit 1000;
      语句1为0.2077秒;语句2为0.0063秒
      两条语句的时间比是:语句1/语句2=32.968
   
      比较以上的数据时,我们可以发现采用where...limit....性能基本稳定,受偏移量和行数的影响不大,而单纯采用limit的话,受偏移量的影响很大,当偏移量大到一定后性能开始大幅下降。不过在数据量不大的情况下,两者的区别不大,使用哪种就是个人的兴趣了。
 

MySQL explain结果详解

基于 MySQL 5.0.67 ,存储引擎 MyISAM 。注:单独一行的

MySQL

作者:管理员




现在致电4006-2991-90 OR 查看更多联系方式 →

Go To Top 回顶部