oracle數據庫的索引長度默認30字符以內?
如果你的數據塊大小是8K,那么索引字段的定義長度不能超過6398,比如,你要給表上2個VARCHAR(4000)字段建組合索引,創建時會直接報錯。另外索引組織表及在線重建索引(因為中間會臨時創建一個索引組織表)允許的索引信息長度更小,只能是數據塊大小的40%,實際中8K的數據塊大小,要使用在線重建索引,那定義的長度不能超過3215。從以上可以看出,數據塊大小為8K時,設計字段時如果要定義為VARCHAR(4000),那這個字段就不能考慮建立索引,因為即使能建上,也不能做在線重定義操作,DBA要進行索引維護時只能停止應用,這將對系統的可用性產生較大影響。
關于ORACLE的索引長度還有一些特別的規則,比如自定義函數返回的字符定義長度固定是4000,所以要用自定義函數做函數索引需要特別注意一下,這可能會影響在線重建索引不能操作。
內置函數的索引長度根據函數決定,比如UPPER這種不改變長度的就是索引字段定義的長度,SUBSTR這種會改變長度要根據函數截取長度決定。
NUMBER類型字段的長度固定是22。
DATA類型字段的長度固定是7。
索引默認是升序,如果要降序建的索引長度是字段定義長度*1.5+1。