mysql 分区查询优化

Mysql  /  houtizong 发布于 3年前   155
分区查询优化  引入分区可以给查询带来一定的优势,但同时也会引入一些bug.    分区最大的优点就是优化器可以根据分区函数来过滤掉一些分区,通过分区过滤可以让查询扫描更少的数据。  所以,对于访问分区表来说,很重要的一点是要在where 条件中带入分区,让优化器过滤掉无需访问的分区。    可以通过查看explain执行计划,是否携带 partitions关键字来判断是否执行了分区过滤。    使用条件 where year(date) = 2010 并不能过滤分区。  mysql只能在使用分区函数的列本身进行比较时才能过滤分区,而不能通过表达式的值去过滤分区,即使这个表达式就是分区函数也不行。  这就和查询中使用独立的列才能使用索引的道理是一样的。所以只需要将上面的查询等价的改为  where date between 2010-01-01 and 2010-12-31 就可以过滤分区了。    优化器在处理查询的过程中总是尽可能聪明的去过滤分区。例如,若分区表是关联操作中的第二张表,且关联条件是分区键,mysql就只会在对应的分区里匹配行,  (explain 无法显示这种情况下的分区过滤,因为这是运行时的分区过滤,而不是查询优化阶段)  合并表  合并表是一种过时的技术,可能会被淘汰删除。分区和优化器结合才是未来的趋势。    

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客