当前位置:首页 > 技术分享 > 详情
sousuo
sousuo

ORACLE性能优化之SQL语句索引优化

上传时间:2022-06-13            浏览次数:64
什么时候使用索引
*如果要检索全表,不必要建索引,因为索引会带来额外的IO操作。 *如果检索的记录数占全部表记录的10%以下可以考虑建索引(大表)。 *表之间的关联字段可以考虑建索引,特别是一张大表和一张小表的关联。 *B*Tree索引适合于大量的增、删、改(OLTP)
不适合用包含OR操作符的查询;一般不适用NULL判断;
适合高基数的列(重复值少) *Bitmap索引适合于决策支持系统OLAP;
做UPDATE代价比较高;会锁块;
非常适合OR操作符的查询;
适合低基数的列(比如,只有Y和N两种值) ; *Reverse索引反转了b*tree索引码中的字节,是索引条目分配更均匀,多用于并行服务器环境下,用于减少索引叶的竞争。     索引是’双刃剑’,在查询与DML之间寻求平衡
改写SQL使用索引
*普通索引列 a is not null 按逻辑改为a>0或a>
*like操作改写
*能用union all绝不用union,除非要去重
*in操作虽然简单易懂,但oracle内部会转换为表连接查询,使用in会多一步转换操作,所以建议使用表关联查询 *not in 强烈建议使用not exists或(外连接+判断为空) *<>(不等于)操作不走索引,推荐a<>0改为(a>0 ora<0)    a<>’’改为a>’’ *提防隐式类型转换, oracle内部处理a=0与a=‘0’是完全不同的,甚至会导致不走索引。
发表评论
请遵守网络文明公约,理性发言
访客头像

还没有人来评论,快来抢个沙发吧!

0371-56789390
公司地址

郑州市花园路东风路向西300路南弘熹台22层

联系我们