【发布时间】:2011-05-05 18:34:05
【问题描述】:
我有一个表,它按 id 上的范围和代码上的哈希(两者都是整数)进行分区。 30 个分区,每个分区 4 个哈希子分区,总共 120 个。
如果我只对 id 进行选择,解释计划显示它正确地修剪到与其相关的分区和子分区 (4)
如果我对 id + 代码进行选择,解释计划显示它正确地修剪到与其相关的一个特定子分区 (1)
但是...
如果我只对代码进行选择,解释计划似乎表明 MySQL 正在执行全表扫描(120 个分区),而不是像 Oracle 那样只扫描每个分区的一个相关子分区(共 30 个)。
当 MySQL 无法修剪掉整个分区时,我是否必须做一些特别的事情才能让 MySQL 能够利用子分区修剪?还是 MySQL(至少 5.1)不支持自己利用子分区?
【问题讨论】:
-
您使用的是什么引擎类型?
-
非常有趣。我很困惑,因为 innoDB 不做散列键,但我猜你的意思是存储在 B+树中的计算散列。
标签: mysql partitioning