SqlServer中在查詢時,我們為了優化性能,通常會為where條件的字段建立索引,如果條件比較固定還會建立組合索引,接下來,我們來看一下索引與查詢的相關知識及相關陷阱。
SQL表自動為主鍵加聚集索引的猜想
我認為應該是對查詢的優化,因為如果聚集(最多只能有一個)索引的話,在SQL查詢時,將進行全表掃描,反之,進行聚集索引(B樹結構)掃描,這將大大加快檢索的速度;有時,我們感覺對主鍵(自增的)加聚集索引沒什么用,所以就把它改為非聚集索引,但當我們為表的其它字段索引后,發展查詢時沒有按着索引檢索,而是全表掃描,這是為何?原因是表中沒有任何字段是聚集的索引,所以你還必須為這個索引加上聚集的,sqlserver怕我們忘記加“聚集”索引,所以當我們在設置主鍵時,它幫助我們自動為主鍵加上聚集索引,這是那個原因。
對於存在聚集索引的表,在查詢計划中可以觀察到它是走聚集索引的
反之,我們把主鍵的聚集索引改為非聚集索引,結果就不同了
當表中沒有聚集索引時,查詢將會是全表掃描
我們還真應該記得:為了優化查詢,我們的表中需要設置聚集索引,當然它可以不是主鍵。