单去说这个问题,就很简单,就是在查询条件里,不要加聚合函数。
主要是,说下这个问题的影响以及与查找过程,首先的现象就是大量的交易出错,因为是在混合场景中,那么最终就一个个筛选,最终确定了某个交易导致的,然后具体去查找个交易的SQL语句,基本没查出什么异常,最后还请来了sybase的工程师,然后一点点纠错查找,到最后定为到了这个问题上。
查了点相关资料:
至于联合索引为什么无效,是因为 WHERE 后使用聚合函数的话,索引将不起作用
当我们在where语句中加入is null条件时,对应列索引是不会出现在执行计划中的。Is not null条件在选择率合适的情况下,还是可能引入索引执行计划的
从字典上看出,索引中对应的函数正好等于列非空的行数。证明空值的确是不会进入索引。这样is null不走索引就好理解了,因为对应的行根本就没有在索引树上,所以也就不存在执行计划中出现索引路径了
================
其实大学教材里,也教给过我们聚合函数不要瞎用。