主鍵與唯一索引(unique index)

1)創建表時,不能在同一個字段上建立兩個索引(主鍵默認建立唯一索引),在需要經常查詢的字段上建立索引(如:deal_id已經是主鍵,不能再次執行:create index tmp_table_index on tmp_table(deal_id),會報錯);

                a) 主鍵:該字段沒有重複值,且不允許爲空

                 惟一索引:該字段沒有重複值,但允許空值(該字段可以有多個null)

                 一張table只允許一個主鍵,但可以創建多個unique index

                比如,表中有5行,ID的值是   1   2   3   4   5,就可以作爲主鍵

                但如果ID的值是   1   2   3   4   NULL  NULL,則可以建立惟一索引,不能作爲主鍵

                可以爲多個字段建立唯一索引

               create unique index unique_index01 on search_result_tmp(deal_id,compare_flag);

               建立唯一索引以後,只允許插入一條如下記錄,插入兩條時會違反unique index約束

                Insert into search_result_temp values(1,null);

  2刪除索引drop index unique_index01

  3函數索引

  如果在我們的查詢條件使用了函數,那麼索引就不可用了。

  可以用建立函數索引的方式,來解決這個問題

  例如:

        select * from product where nvl(price,0.0)>1000.0 ;

  這裏,nvl(price,0.0)使用了函數,索引不能利用price字段上做的索引了

  ok,我們來創建函數索引

  create index index_price on product(nvl(price,0.0));

4其他

        唯一索引能極大的提高查詢速度,而且還有唯一約束的作用

  一般索引,只能提高30%左右的速度

  經常插入,修改,應在查詢允許的情況下,儘量減少索引,因爲添加索引,插入,修改等操作,需要更多的時間

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章