位置: 编程技术 - 正文

MySQL中利用索引对数据进行排序的基础教程(mysql 使用索引)

编辑:rootadmin

推荐整理分享MySQL中利用索引对数据进行排序的基础教程(mysql 使用索引),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql索引使用案例,mysql索引用法,使用mysql索引都有什么原则,mysql 使用索引,使用mysql索引都有什么原则,mysql 索引使用技巧及注意事项,mysql索引用法,mysql利用索引查询,内容如对您有帮助,希望把文章链接给更多的朋友!

MySQL中,有两种方式生成有序结果集:一是使用filesort,二是按索引顺序扫描。利用索引进行排序操作是非常快的,而且可以利用同一索引同时进行查找和排序操作。当索引的顺序与ORDER BY中的列顺序相同且所有的列是同一方向(全部升序或者全部降序)时,可以使用索引来排序。如果查询是连接多个表,仅当ORDER BY中的所有列都是第一个表的列时才会使用索引。其它情况都会使用filesort。

MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度。MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。通过索引优化来实现MySQL的ORDER BY语句优化:

下面来罗列一些常见的索引对ORFER BY的优化情况:

1、如果一个SQL语句形如:

在[sort]这个栏位上建立索引就可以实现利用索引进行order by 优化。2、WHERE + ORDER BY的索引优化,形如:

MySQL中利用索引对数据进行排序的基础教程(mysql 使用索引)

建立一个联合索引(columnX,sort)来实现order by 优化。注意:如果columnX对应多个值,如下面语句就无法利用索引来实现order by的优化

3、WHERE+ 多个字段ORDER BY

建立索引(uid,x,y)实现order by的优化,比建立(x,y,uid)索引效果要好得多。MySQL Order By不能使用索引来优化排序的情况* 对不同的索引键做 ORDER BY :(key1,key2分别建立索引)

* 在非连续的索引键部分上做 ORDER BY:(key_part1,key_part2建立联合索引&#;key2建立索引)

* 同时使用了 ASC 和 DESC:(key_part1,key_part2建立联合索引)

* 用于搜索记录的索引键和做 ORDER BY 的不是同一个:(key1,key2分别建立索引)

* 如果在WHERE和ORDER BY的栏位上应用表达式(函数)时,则无法利用索引来实现order by的优化

当MySQL不能使用索引进行排序时,就会利用自己的排序算法(快速排序算法)在内存(sort buffer)中对数据进行排序,如果内存装载不下,它会将磁盘上的数据进行分块,再对各个数据块进行排序,然后将各个块合并成有序的结果集(实际上就是外排序)。对于filesort,MySQL有两种排序算法。1.两遍扫描算法(Two passes)实现方式是先将须要排序的字段和可以直接定位到相关行数据的指针信息取出,然后在设定的内存(通过参数sort_buffer_size设定)中进行排序,完成排序之后再次通过行指针信息取出所需的Columns。注:该算法是4.1之前采用的算法,它需要两次访问数据,尤其是第二次读取操作会导致大量的随机I/O操作。另一方面,内存开销较小。2. 一次扫描算法(single pass)该算法一次性将所需的Columns全部取出,在内存中排序后直接将结果输出。注:从 MySQL 4.1 版本开始使用该算法。它减少了I/O的次数,效率较高,但是内存开销也较大。如果我们将并不需要的Columns也取出来,就会极大地浪费排序过程所需要的内存。在 MySQL 4.1 之后的版本中,可以通过设置 max_length_for_sort_data 参数来控制 MySQL 选择第一种排序算法还是第二种。当取出的所有大字段总大小大于 max_length_for_sort_data 的设置时,MySQL 就会选择使用第一种排序算法,反之,则会选择第二种。为了尽可能地提高排序性能,我们自然更希望使用第二种排序算法,所以在 Query 中仅仅取出需要的 Columns 是非常有必要的。

当对连接操作进行排序时,如果ORDER BY仅仅引用第一个表的列,MySQL对该表进行filesort操作,然后进行连接处理,此时,EXPLAIN输出“Using filesort”;否则,MySQL必须将查询的结果集生成一个临时表,在连接完成之后进行filesort操作,此时,EXPLAIN输出“Using temporary;Using filesort”。

CentOS下重置MySQL的root密码的教程 本人在CentOS6.4上安装万mysql后,无法通过root进入,因为安装的时候,并没有设置root密码,似乎有个初始随机密码,但是不记得了,太麻烦,直接重置root

MySQL中对于NULL值的理解和使用教程 NULL值的概念是造成SQL的新手的混淆的普遍原因,他们经常认为NULL是和一个空字符串''的一样的东西。不是这样的!例如,下列语句是完全不同的:mysqlIN

MySQL存储过程中的基本函数和触发器的相关学习教程 MySQL存储过程的常用函数一.字符串类CHARSET(str)//返回字串字符集CONCAT(string2[,...])//连接字串INSTR(string,substring)//返回substring首次在string中出现的位置,不存

标签: mysql 使用索引

本文链接地址:https://www.jiuchutong.com/biancheng/312378.html 转载请保留说明!

上一篇:快速学习MySQL索引的入门超级教程(mysql索引原理及慢查询优化)

下一篇:MySQL中对于NULL值的理解和使用教程(mysql null+1)

  • 成本结转不规范会受到什么罚款
  • 公司注销公户没注销会如何
  • 所得税申报资产不允许为0?
  • 职业年金单位缴费方式
  • 保险公司代征的税收
  • 工资薪金可以抵扣进项税吗
  • 申报个税人员金额一般
  • 怎么强调各个分公司之间无直接联系
  • 保证金利息收入怎么算
  • 调整企业银行存款账面余额的记账依据是什么
  • 土地增值税预征率
  • 房贷利息抵个税细则 两套房
  • 筹建期间有收入怎么办
  • 冲减应收帐款分录
  • 收到一张建筑服务*施工费发票
  • 农产品收购发票是普票还是专票
  • 企业怎么申请无运输工具承运资质
  • 企业短期贷款进什么科目
  • 土地增值税计算题及答案解析
  • 消费型增值税计算公式
  • 纳税人核定征收企业所得税
  • 汇算清缴已退税的还可以作废吗
  • 申报工伤的流程及时间
  • 工资薪金所得税扣除标准
  • 福利费的进项税怎么做账
  • 房地产车位收入做账
  • 桌面图标变成了一张纸
  • 年末结转年初建账
  • 合同应收账款减免
  • 辞退补偿金怎么算n1吗
  • php string
  • 租金摊销表格式
  • 公司整体收购协议书范本
  • PHP:pg_send_query()的用法_PostgreSQL函数
  • 定期支票丢了能取钱吗
  • php web3
  • 建筑业会计需要做到哪些
  • 当月计算的增值税怎么算
  • 如何使用vue
  • springboot比spring做了哪些改进
  • bad block bitmap checksum
  • 深究Python中的asyncio库-shield函数
  • 会计实务中的计提是什么意思
  • mysql全局锁和表锁
  • 公司购买购物卡送客户的会计分录
  • 累计预扣法计算并预扣预缴税款
  • 公司给部分员工长期停工怎么办
  • 已申报营业税未开发票
  • 事务所企业所得税
  • 小规模企业现金流量表
  • 房地产采取按揭销售的,其销售的入账时间为
  • 企业缴纳员工社保会计分录
  • 上年结转会计分录
  • 预交税会计分录
  • 永利股权投资基金怎么样
  • 研发费用入账
  • 固定资产的入账价值包括增值税吗?
  • 成本价和原价一样吗
  • 出口免抵退和免退有什么区别
  • 建筑行业总产值占我国GDP的比重
  • 产权转移书据纳税义务时间
  • 分公司注销余额转总公司会计分录
  • 研发费用是管理费用的比例多少不正常
  • win7系统宽带连接
  • cpu资源占用率计算原理
  • win7桌面移到其他盘
  • linux的samba是什么
  • linux无法使用yum命令
  • android ichart ColumnStacked2D图表无法显示解决方案
  • jquery 模态框实现
  • jQuery iScroll.js 移动端滚动条美化插件第1/5页
  • python解决方案与程序有什么不同
  • 江苏税务怎么登陆
  • 电子湖北税务局
  • 江苏电子税务局网站官网下载
  • 地税局契税发票编号查询
  • 广州市税务局副局长陈忠文
  • 如何做好税务党建工作
  • 证券行业的税务问题
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设