oracle中sql执行性能关注点
繁琐复杂的执行计划、可能迷了开发人员的眼、导致一条性感又傻X的SQL 在服务器上跑得特欢乐 有介于此、重点抓住几个部分、至于其他的嘛、当然是、非礼勿视咯、、 ㈠ 返回行的数量 Oracle优化器是基于成本的、评估成本的一个主要指标便是查询多少行 一般的、返回值在100W或者大表返回值超过总记录50%、可优化的空间就非常小 标记图为: ㈡ 返回行与逻辑读的比率 经验值是:每行5个以下一致性读(consistent gets + db block gets = 所谓的logical reads)开销是可接受的 标记图为: 每行需要花费7 个逻辑读 ㈢ 聚合查询 这类查询有 2 点需要注意: ① 返回行应是扫描表的行数而不是1 ② 一般的优化技巧:把索引当成瘦表而无需再回表(回表标识为 Table Access By index rowid) 标记图为: ㈣ 预测行的准确度 执行计划里有个列叫:Rows、这是Oracle 预测返回的行、有些时候或许不是特马准备 记得拿该值和真正返回的行比较、如果确实不准确、应该去找原因、比如统计信息、直方图、高水位...等 标记图为: ㈤ 谓词信息 Predicate Information 有2 个取值:filter 和 access、其中、access 一般为索引读或hash join 关注此鸟、最重要的在于、查看是否有发生数据类型转换、这抑制了索引