当前位置:首页 > 开发 > 数据库 > 正文

mysql 分区查询优化

发表于: 2015-07-16   作者:annan211   来源:转载   浏览:
摘要: 分区查询优化 引入分区可以给查询带来一定的优势,但同时也会引入一些bug. 分区最大的优点就是优化器可以根据分区函数来过滤掉一些分区,通过分区过滤可以让查询扫描更少的数据。 所以,对于访问分区表来说,很重要的一点是要在where 条件中带入分区,让优化器过滤掉无需访问的分区。 可以通过查看explain执行计划,是否携带 partitions


分区查询优化

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

mysql 分区查询优化

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
我们已经讨论过了分表优化适应的场合,分表优化属于“显示”优化,这种优化我们看得见,但日后修改
我们已经讨论过了分表优化适应的场合,分表优化属于“显示”优化,这种优化我们看得见,但日后修改
我们已经讨论过了分表优化适应的场合,分表优化属于“显示”优化,这种优化我们看得见,但日后修改
项目开发初期,数据库数据比较单纯。许多开发人员,只要功能上实现了,就以为大吉。到了大量数据测试
索引的类型 : Ø 普通索引  这是最基本的索引类型,没唯一性之类的限制。 Ø 唯一性索引 和普通索
查询的基础知识 MySQL查询过程如下图所示: MySQL是通过查询语句的哈希查找来命中缓存的,需要注意
我觉得不错的 重要:使用连接(JOIN)来代替子查询(Sub-Queries) mysql优化,mysql对子查询不给力 1
1、请不要在SELECT中使用DISTINCT; #会用到临时表 2、尽可能不要SELECT *,而应该查询需要用到的指
1、请不要在SELECT中使用DISTINCT; #会用到临时表 2、尽可能不要SELECT *,而应该查询需要用到的指
-->Title: 淺議 SQL Server 执行计划 -->Author: wufeng4552 -->Date :2009-10-20 15:08:2
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号