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. 分多次查询临时表

     

  • 相关阅读:
    对象状态序列化到字节流中
    操作EXCEL完毕后,关闭EXCEL进程
    ORACLE多表查询优化(引)
    再谈需要分析一
    动态添加table,动态添加控件
    ref传参时出错
    SqlServer2000下实现行列转换
    调用结构属性、方法或公共字段的区别
    拆箱存在的隐患
    鼠标悬停图片,滑动显示文字
  • 原文地址:https://www.cnblogs.com/xcn123/p/10884033.html
Copyright © 2011-2022 走看看