使用oracle索引列时条件类型不匹配列类型,将无法触发索引
表结构如下:


问题:
AC 列上建立了索引IDX_ATEST_AC,但是却没有使用

衍生问题:
由于不使用索引,造成操作时间变长;当此操作的表为主表并且关联有复杂事物的操作时,随着主表数据量渐渐增加,在数量到达百万时,主表频繁被锁的请况将大几率出现。
解决:
原因是where条件的类型不对,这个问题也常见使用hibernate表映射主键使用seqence 序列自动生成,但是列类型是字符串的实例中,修改如下:

建议:
在主键时尽量不要使用序列,而使用GUID,以避免上述问题。

当在Oracle数据库中,索引列的条件类型与列类型不匹配时,索引无法被有效利用,这会导致查询性能下降。在主表数据量增长到一定程度时,可能引发频繁的锁表现象。解决方法是确保WHERE子句中的条件类型与索引列一致,或者考虑改用GUID作为主键以避免此类问题。
最低0.47元/天 解锁文章
1652

被折叠的 条评论
为什么被折叠?



