1. 程式人生 > >怎麽解決ORACLE 中 CHAR類型的索引問題

怎麽解決ORACLE 中 CHAR類型的索引問題

添加 關聯查詢 系統 pre 破壞 補全 如果 關聯 acl

在很多場景中,都有如下情況

trim(a.colunm1) = trim(b.colunm2)

應該怎麽優化呢?

用到 TRIM 的很多原因是某些系統為了提高查詢效率,不使用 ORACLE 的特有的,優秀的,且前無古人後無來者定義的 VARCHAR2 ,而是使用 CHAR 類型,寫死了字符長度。

因此,在關聯查詢的時候就郁悶了,新建立的表就使用的 VARCHAR2 ,如果不用 TRIM 去掉 CHAR 類型的空格吧,又沒辦法匹配,如果用 TRIM 吧,索引又被破壞。

而且,重點是,雖然添加一個TRIM(COLUNM1)索引能提高查找效率,但是也增加了存儲空間,並且影響寫入效率。

怎麽辦!!!!怎麽辦!!!

還好你看了我的文章,因為我的聰明才智,想到了補全空格的方法:

RPAD(A.COLUNM1,字符長度,空格) = B.COLUNM2

這樣是否完美解決了呢!

效率還倍兒高!

後來發現這不是我的原創,百度早有了。。。

怎麽解決ORACLE 中 CHAR類型的索引問題