请问下各位大佬,在TIDB 收集统计信息时,为什么要收集非索引列的统计信息呢?MySQL是只会收集索引列的统计信息的,谢谢
可能是MySQL和TiDB的生成执行计划的依据不同
tidb好像还要依据一些其他的算子,所以才需要统计其他列
1 个赞
Oracle也会收集非索引列。其实收集非索引列有助于自动化。
1 个赞
收集了才之后才知道走索引合适还是走全表扫描合适。
判断回表与否的代码,select * 的代价
1 个赞
那直接收集统计表的统计信息就可以了嘛,不需要收集每个列的统计信息吧?
1 个赞
优化器框架 一般优化器分两个阶段进行优化,即基于规则的优化(Rule-Based-Optimization,简称 RBO )和基于代价的优化(CBO)
基于代价的优化(CBO)需要计算最短路径(根据统计信息:有的时候走索引反而没有不走索引列快)
1 个赞