前言

  • 众所周知,当一个数据库的单表数据量很大时,比如说是百万数量级的,如果我们使用普通的查询语句的话,耗时会非常多(相比加上索引),今天小编带领着大家做一下实验,见证一下具有二百多万条数据的单表,怎样优化查询语句。
  • 首先,我们需要往数据库中的某张表中查询百万条数据,小编插入了2646229条记录,请看下面截图。

普通的查询语句分析

  • 小编今天主要说的是简单查询语句和分页查询语句,我们先从简单的查询语句入手。 查询数据库中的第一条记录,查询条件没有加索引。截图如下

  • 这是Privilege表中的第一条记录,大家看一下查询时间,用了3.03秒,下面我们查询最后一条记录,截图如下。

  • 耗时还是3.03秒,可见,如果表中的数据量过大的话,我们如果不改变查询策略,及时查询表中的第一条数据,也会很耗时。现在,我们改变查询条件,将pid作为查询条件,因为pid为主键,数据库默认为主键索引,为了与上面一张图形成对比,我们也查询最后一条记录,即pid=2646430的一条记录,截图如下

  • 由图我们就可以看出,使用pid为查询条件查询表中的最后一条记录,耗时为0.00 sec,不能说不耗时,但相比3.03 sec来说,已经灰常短了。那是为什么哪?就是因为pid上有默认的主键索引,这就是索引的力量。

分页查询语句

在mysql中,当我们分页查询数据库中的记录时,莫过于使用limit函数了,那么我们接下来做一下实验。

从第1000数据开始查,查10数据

 
耗时非常短是吧,0.00 sec

从第800000条数据开始查,查10条数据

 
有图可以看出,耗时0.61 sec

查询此表中的最后10条记录

 
由图可见,耗时2.89 sec ,所以,使用limit分页查询数据所耗的时间,与查询记录条数的起始位置有关,那怎么优化查询速度哪?那就使用索引吧!我将pid,name加上了覆盖索引,语句如下

alter table privilege add index pid_name (pid, name);
  • 1
  • 现在小编用limit函数只查pid 和 name两个字段,分页数据如果还需要别的字段,那么就将该字段与pid建立覆盖索引,置于覆盖索引是什么,小编一会儿再说。请看图,我们还是查询表中的最后十条记录。 
     
    耗时0.86 sec ,2.89 sec 而言,是不是快了很多。

小结

  • 从实验可以得出,表中的字段加上索引之后确实能提升查询的速度。当单表中的数据量达到百万之后,我们将数据库表中的数据从数据库中搜出来,再加上网络的传输,最终显示在某个网页上,岂不是更耗时,还有一点,在优化 语句的时候,我们尽量不要查询没有用的字段,不要动不动就将所有字段都查询出来,无论是对于数据库查询,还是网络传输,这都是耗时的。当然,索引也不是加上就是好的,当表中的数据没有太多事,加上索引反而是累赘,置于什么是覆盖索引,大家请看下一篇文章。

Mysql 百万级别的数据查询相关推荐

  1. 基于easyexcel的MySQL百万级别数据的excel导出功能

    前言 最近我做过一个MySQL百万级别数据的excel导出功能,已经正常上线使用了. 这个功能挺有意思的,里面需要注意的细节还真不少,现在拿出来跟大家分享一下,希望对你会有所帮助. 原始需求:用户在U ...

  2. 【MySQL】5.0 数据查询

    数据查询 基本查询 条件查询 连接查询 内连接查询(INNER JOIN) 外连接查询(OUTER JOIN) 复合连接查询 高级应用 Limit Union GROPE BY ORDER BY DI ...

  3. MySQL百万级数据分页查询及优化

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 来源:https://www.cnblogs.com/geningchao 关注我,回复口令获取可获取 ...

  4. mysql实验训练2 数据查询操作_实验训练2:数据查询操作

    <实验训练2:数据查询操作>由会员分享,可在线阅读,更多相关<实验训练2:数据查询操作(6页珍藏版)>请在人人文库网上搜索. 1.实验训练2:数据查询操作请到电脑端查看实验目的 ...

  5. mysql实验训练2 数据查询操作_实验训练2:数据查询操作.doc

    实验训练2:数据查询操作.doc 实验训练2数据查询操作请到电脑端查看实验目的基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL运算符.函数.谓词,练习Select语句的操作方法. ...

  6. MySQL项目五,数据查询

    项目五:数据查询 本项目以电商购物管理系统的商品及其相关信息的检索和统计查询为案例,主要包括基本数据查询.统计数据查询.跨表连接查询和子查询应用四个任务. 任务1:基本数据查询 一.SELECT基本查 ...

  7. 关于mysql百万级别数据条件查询过慢问题以及count()过慢

    检查条件中是否有Long字段 如有Long字段 将Long字段改为String类型 即可 count(*)查询过慢 首先建立索引 CREATE INDEX index2_id(索引名) ON sys_ ...

  8. MySQL千万级别表数据中提高RAND随机查询的实验

    1,准备测试数据 1.1 建库建表 mysql> create database hwdb; Query OK, 1 row affected (0.34 sec) mysql> mysq ...

  9. MySQL学习笔记5||数据查询select

    备注:该博客内容根据技术教学视频整理与总结而成,原视频来自于尚硅谷MySQL教程. 一.基础查询 select from 语法:        SELECT 要查询的东西[FROM 表名]; 特点:  ...

最新文章

  1. 百度bae mysql_微信公众号开发第二课 百度BAE搭建和数据库使用
  2. pku 3436 ACM Computer Factory ——最大流 EK
  3. Java类加载器(一)——类加载器层次与模型
  4. 继续深入更新shell脚本容易出错的地方
  5. java实现复原IP地址,回溯算法:复原IP地址
  6. Centos7快速部署CloudStack服务器
  7. OpenCV精进之路(十一):感兴趣区域ROI和logo添加技术
  8. Springboot+JasperReport报表打印
  9. UUIDHexGenerator
  10. 局域网DNS服务器搭建
  11. springboot的web进阶知识(2)
  12. 看电视剧《包青天》笔记
  13. 红孩儿编辑器的模块设计9
  14. 广东高中生多少人_广东2016高考五大变化 考生总人数73.3万
  15. 软件工程导论 第五版 张海藩 编著 总结
  16. DSP/BIOS详解入门-再回炉
  17. 题目 - 北京地铁 描述 北京地铁涨价了,现在的地铁票价计算方法如下: 6公里内 3元 (包括6公里) 6-12 公里 4元 (不包括6公里,包括12公里) 12-32 公里 每10公里加1元
  18. 使用以太坊和 Metamask 再也不需要输入密码
  19. formdata格式
  20. Android app集成支付宝支付

热门文章

  1. C++学习笔记【类和对象】【构造函数和析构函数】
  2. 体重记录_心理体重-生活即将结束
  3. 阿里等大厂的需求研发/开发流程,进去前了解一下
  4. uni-app 微信同声传译,实现AI语音功能(语音转文字,文字转语音,英汉互译
  5. 5.15 mysql 数据库(数据库/表操作/索引/pymysql/备份与恢复/事务/锁) 学习笔记
  6. kubernetes命令入门(namespaces,pods)
  7. 名帖209 赵孟頫 行书《千字文》
  8. springmvc+mybatis实现简单的图书管理系统
  9. Android 6.0+ 解决浏览器某些页面无法访问的问题
  10. 腾讯暑期实习笔经面经-为你准备(独家资料)