分区的表,意味着每一个分区的每一行,就要扫描到,才知道是否满足 where c2='1'的条件。对于 未分区的表,就是这个表的每一行,都要扫描到了。2、加了索引后,未分区的表比分区的表执行的记录数还要少,这是为什么?你这个分区表上面的索引,我估计是局部索引。也就是 当 where c3=...and c2...
mysql 分区的字段 与 where 的条件有什么样的关系啊
1、为什么没加索引时,两个表执行的记录数一样,难道分区的字段c3一定要包含在where条件里分区才生效吗?
对的.
因为
你分区,
还是不分区。
where
c2='1'
最后结果都是
“全表扫描”
对于
分区的表,
意味着每一个分区的每一行,
就要扫描到,
才知道是否满足
where
c2='1'
的条件。
对于
未分区的表,
就是这个表的每一行,都要扫描到了。
2、加了索引后,未分区的表比分区的表执行的记录数还要少,这是为什么?
你这个分区表上面的索引,
我估计是局部索引。
也就是
当
where
c3=...
and
c2=
...
的时候,
能够达到最好的效果。
当只有
where
c2
=
...
的时候。
先要依次判断每一个分区,
然后在那个分区里面去
使用索引。
所以资源消耗,
要比那个
不分区的表,
要高一些。2020-04-17