http://blog.csdn.net/xluren/article/details/32746183

http://www.cnblogs.com/kupig/archive/2011/10/19/2217228.html

http://blog.csdn.net/longyulu/article/details/8850672

首先创建表结构

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int(11) NOT NULL auto_increment,

`name` varchar(255) default NULL,

`age` int(11) default NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

出入800万数据;

测试开始:

1.正常查询

SELECT * FROM test.`user` LIMIT 7921323,10

耗时:3.513s

2.利用id排序

SELECT * FROM test.`user` ORDER BY id LIMIT 7721323, 10;

耗时3.408s

3.利用IN

SELECT * FROM test.`user` WHERE id IN (7921323,7921300,7921386)

耗时:0.097s,这个主要是利用了索引所以速度快

来看一下没有索引的情况

SELECT * FROM test.`user` WHERE `name` IN ('jack7999008','jack7699008','jack7599008')

耗时:3.683s

针对IN这种情况需要找出ID,对于几百万的表,想要查询出id也需要耗时,对于条件分页查询,我们可以针对条件对应的字段建立索引,找出id,然后再IN SET;

4.网上说的利用Id

SELECT * FROM test.`user` WHERE id >= (SELECT id FROM test.`user` LIMIT 7721323, 1) LIMIT 10;

耗时:3.409s

5.BETWEEN

SELECT * FROM test.`user` WHERE id BETWEEN 7921323 AND 7921333 and `name` LIKE '%jack%' ;

耗时0.001s,这种情况也是利用主键索引

SELECT * FROM test.`user` WHERE `name` LIKE '%jack%' AND id BETWEEN 7921323 AND 7921333

耗时0.160s,从此可以看出条件放前,放后还是有区别的;

6.不利用索引单纯查询某一条记录

SELECT * FROM test.`user` WHERE `name` LIKE 'jack7721323'

耗时3.777s

为name字段添加索引

ALTER TABLE user ADD INDEX(name);

再执行上面查询:

耗时0.258s

show index from user; 查看user表索引

show table status from test where name='user';查看user表状态

总结:

针对ID连续的我们可以利用BETWEEN;对于ID不连续的我们可以用IN,但这是需要查询出ID集合,我们可以对所要查询的条件添加INDEX,需要注意的是:MySQL只对一下操作符才使用索引,,>=,between,in,以及某些时候的like(不以通配符%或_开头的情形),而理论上每张表里面最多可创建16个索引,不过除非是数据量真的很多,否则过多的使用索引,建立索引的字段就越多,那数据量大的时候,索引文件就会越大,这是最显著的问题,同时

,一个索引会在 update 或 insert 时增加一次 I/O,对于操作系统底层来说是非常损耗性能的,索引过多一定情况下会导致索引文件过大(指数增长),系统在寻址时查询时间增长。

分享到:

2016-07-25 11:30

浏览 1204

分类:数据库

评论

mysql 分页查询分析_mysql 大表分页查询测试分析优化相关推荐

  1. mysql 分页 有序保证_MySql大表分页(附独门秘技)

    问题背景 MySql(InnoDB)中的订单表需要按时间顺序分页查询,且主键不是时间维度递增,订单表在百万以上规模,此时如何高性能地实现该需求? 注:本文并非主要讲解如何建立索引,以下的分析均建立在有 ...

  2. 倒序查询_mysql大表分页查询翻页优化方案

    mysql分页查询是先查询出来所有数据,然后跳过offset,取limit条记录,造成了越往后的页数,查询时间越长 一般优化思路是转换offset,让offset尽可能的小,最好能每次查询都是第一页, ...

  3. mysql 大表查询慢_mysql大表查询慢怎么优化?

    mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...

  4. mysql联合查询查询语句_mysql多表联合查询语句是什么

    mysql多表联合查询语句是:使用select语句,union关键词,语法为[select 语句1 union [union 选项] select 语句2 union [union 选项] selec ...

  5. mysql多表分页查询语句_Mysql多表分页查询

    多张表,字段完全相同,表名称不同,每三个月的数据插入到一张表中.当查询历史的时候,把所有表中的数据展示出来并做分页处理. sql语句的写法: select * from ${fristName} wh ...

  6. mysql 多行 连续_mysql多表连续查询的问题

    id name relation 1 n1 r1 2 n2 r2 3 n4 r1 4 n5 r1 5 n6 r2 6 n6 r1 表relation关系如上所示 其中relation字段,标示当前行与 ...

  7. MySQL 对于千万级的大表要怎么优化?(读写分离、水平拆分、垂直拆分)

    海豚精灵:https://www.whhtjl.com:优课GO:https://mgo.whhtjl.com 思考 如何设计或优化千万级别的大表?此外无其他信息,个人觉得这个话题有点范,就只好简单说 ...

  8. oracle多表关联查询报表,oracle多表关联查询和子查询

    oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...

  9. 查询:使用多表连接查询数据

    /**********************************   查询:使用多表连接查询数据 ***********************************/ /*    SQL S ...

最新文章

  1. [手机分享]黑莓手机7系列分享之——黑莓7730
  2. yolov5模型训练
  3. Google 修补多项 Android 高危漏洞
  4. linux shell判断当前目录下的文件或目录
  5. python typing typescript_将 python 数据转化为 TypeScript 格式
  6. taskAffinity(Activity默认Application,Application默认包名,Task默认根Activity) singleInstance放入新栈
  7. mysql noinstall 安装_mysql-noinstall安装指南
  8. mysql hash分区 数目_mysql8 参考手册-HASH分区
  9. android新建项目错误,新建Android项目出错
  10. 你一定要了解的Kubernetes
  11. mac在查看jre通路
  12. 编程入门先学什么python-编程入门先学什么比较好
  13. ppt倒计时3分钟_老板发来200页PPT文件,让我翻译成英文,3分钟教你搞定
  14. C语言中的指针型函数值
  15. StringRedisTemplate和RedisTemplate区别和联
  16. 分布式系统关注点(3)——过去这几十年,分布式系统的「数据一致性」精华都在这了!...
  17. 几何语言点C是ab的中点,数学几何定理符号语言[教学备用]
  18. matlab的基本函数,matlab基本函数
  19. kcon 黑客大会 github
  20. 机器人在gazebo中使用四轮差速仿真模型时,转向不明显?

热门文章

  1. superblock块丢失后
  2. 16、计时器方法2(setTimeout、clearTimeout、防抖、节流)
  3. notion自建服务器,秒杀传统型笔记!《Notion》等 5 款工具全方位对比,模块化笔记究竟强在哪?...
  4. 深度学习中benchmark什么意思,例子
  5. SEO发布外链的技巧
  6. Android登录界面防劫持提醒处理
  7. 从生命周期的角度谈谈 Oracle 12c, 18c, 19c 和 20c
  8. ajax用到了象征吗,问问题: Ajax队徽是什么意思?
  9. 挡板java_Socket挡板之Java开发
  10. GraphPad Prism教程:对数正态分布,几何均值,几何SD因子