• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql大数据下Limit使用

mysql大数据下Limit使用

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql,limit等相关知识,希望本文的分享对您有所帮助
对于一直用Oracle的我,今天可是非常诧异,MySQL中同一个函数在不同数量级上的性能居然差距如此之大。

  先看表ibmng(id,title,info) 唯一 id key 索引title

  先看看两条语句:

  select * from ibmng limit 1000000,10

  select * from ibmng limit 10,10

  很多人都会认为不会有多大差别,但是他们都错了,差别太大了,(可能机器不同有点差距,但绝对10倍以上)具体执行时间留给好奇的同学。

  这是为什么呢,都是offset的错!

  优化的话你可以想方法减小offset,如以下:

  Select * From ibmng Where id >=(
    Select id From ibmng Order By id limit 1000000,1
  ) limit 10

  大家一定会看到问题, limit 1000000,1 同样offset不是一样大吗,肯定不能优化。(但是,又错了,执行之后才知道结果!)

  原因是id是索引,所有快,那么如下sql呢:

  select id from ibmng where title='mysql' order by id limit 1000000,10;

  这条sql大家又会猜错,同样慢的跟蜗牛一样。(在此大家都会想title加了索引啊怎么会这样!)

  接下来大家再执行一条sql如下:

  select id from ibmng where title='mysql' limit 1000000,10;

  执行之后你会发现速度是sousou的快!

  原因看出来了吧,都是用了索引的原因,如果你要用select id from ibmng where title='mysql' order by id limit 1000000,10; 那么就追加复合索引(title,id )吧!

  注意:接下来与limit无关!

  最后回到我现在的场景,如果千万级别的数据分批次读取统计的话,不要使用limit最好,用主键范围判断最佳!(eg:id<=1001000 and id>=1000001)

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2017-05-11mysql xtrabackup 备份恢复实现分享
  • 2018-12-05Mysql5.6忘记root密码修改root密码的方法_MySQL
  • 2017-05-11MySQL replace into 语句浅析(一)
  • 2018-12-05mysql中关于不用结尾符号也能够执行的语句的总结
  • 2018-12-05MySQL快速入门之基本操作
  • 2017-05-11基于mysql replication的问题总结
  • 2018-12-05MySQL学习笔记之数据定义表约束,分页方法总结_MySQL
  • 2018-12-05将Reporting services的RDL文件拷贝到另外一台机器时报Data at t
  • 2018-12-05MySQL在Linux centos7环境下安装教程详解(图)
  • 2018-12-05一个用来统计相同姓名人数的SQl语句

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • SQL数据操作基础(中级)9
    • MySQL死锁问题解决的代码详细介绍
    • SQLServer 优化SQL语句 in 和not in的替代方案
    • MySQL 存储过程传参数实现where id in(1,2,3,...)示例
    • 网站前端和后台性能优化的34条宝贵经验和方法
    • 分区类型的用法汇总
    • 如何查询占CPU高的oracle进程
    • MongoDB中常用的语句总结
    • 关于列变行的10篇文章推荐
    • Mysql命令行登录常用操作系统概述

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有