开发者社区> 问答> 正文

Mysql Limit 优化:报错

【优化前】

    SELECT id

    FROM  tab_a

    WHERE city = 4

    ORDER BY id

    LIMIT 1000000 , 10 ;

【说明】

limit原理是先读n条记录,然后抛弃这n条,读m条想要的。n越大,性能越差。这里n是 1000000了!

【优化方案1】inner join 子查询


SELECT id

FROM table_a

WHERE city=4

INNER JOIN

    (SELECT id

     FROM table_a

    WHERE city=4

      ORDER BY id

      LIMIT 1000000 , 10)

USING (id)

------------------------

优化前有更多I/O开销:先读索引,再读数据,然后抛弃无需的1000000行。

优化后中子查询只读索引,然后通过id直接读取需要的列。

------------------

【优化方案2】分表

上面可清楚看出把city分表掉,还会更快

展开
收起
kun坤 2020-06-07 12:24:39 581 0
1 条回答
写回答
取消 提交回答
  • USING (id) 是啥意思######原来是oracle ######这是MySQL 的技术文档 我去~

    2020-06-07 12:24:44
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像