为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦8
【操作系统】:redhat8.2
【CPU】:8c
【问题描述】*:有一张500w的表GRAPH_SUS_CONTROLLER_NEW,索引如下图,有个SQL如图,COMPANY_ID in5个内容的时候执行计划如下图
COMPANY_ID in6个内容的时候执行计划如下图
问题:为何同样的SQL,in匹配5个和6个走的执行计划不一样,而且5个走了普通索引,6个的时候好像走的那个索引都没有,而且很慢
在达梦,建一个主键会自动系统创建一个索引,走那个索引是基于代价的,比如 in 5个条件的时候,select 结果少,但是in 6个的时候,select结果很多。可能走主键的索引系统就会认为好点。目前SQL优化器不是很智能,出现你的这类情况,可以试试hit ,强制走一下你认为快的索引。
这个几个值在表中的数据分布是怎样的呢