zoukankan      html  css  js  c++  java
  • 如何优化limit

    SELECT * FROM table1 LIMIT offset, rows

    1.简单查询LIMIT优化

    假设表message表中有10万行记录,每次取1000条。

    优化前:

              SELECT message.* FROM message LIMIT 0,1000

              SELECT message.* FROM message LIMIT 1000,1000

              SELECT message.* FROM message LIMIT 2000,1000

              ……

             SELECT message.* FROM message LIMIT 998000,1000

             SELECT message.* FROM message LIMIT 999000,1000  

    优化后:

               SELECT message.* FROM message WHERE uid>0 LIMIT 1000

               SELECT message.* FROM message WHERE uid>1000 LIMIT 1000

               SELECT message.* FROM message WHERE uid>2000 LIMIT 1000

               ……

               SELECT message.* FROM message WHERE uid>998000 LIMIT 1000

               SELECT message.* FROM message WHERE uid>999000 LIMIT 1000

     

    2.复杂查询limit优化

    例如,对于下述SQL语句

    SELECT timerec FROM message WHERE evttype = 1 AND nodename = 'node1' LIMIT 0,1000

    ……

    SELECT timerec FROM message WHERE evttype = 1 AND nodename = 'node1' LIMIT 999000,1000

    ……

    优化方案:建立临时表(含自增主键)存储数十万行的查询结果,之后用第二节的方法分多次访问临时表、获取数据。

    1. 创建临时表
    2. 插入查询结果到临时表
    3. 分多次查询临时表

     

  • 相关阅读:
    简直不敢相信...
    halcon 保存Region [原创]
    VS2015 下载链接
    C#【数据转换】十进制yte[]相互转换
    C# 复制窗体问题完美解决办法
    TextBox 保持固定长度,添加新行滚动到最后,跨线程。
    mysql isnull
    C#跨线程访问控件[我的记录]
    C# 常用类-IO-ClassExcelExport
    C# 常用类-IO-ClassXML
  • 原文地址:https://www.cnblogs.com/xcn123/p/10884033.html
Copyright © 2011-2022 走看看