主鍵和索引有何不同和共同,我認為在sql的企業管理器的表中建了主鍵也就相當於建了索引,不知對否;還想問下聚合索引與其它的索引有什麼不同,在企業管理器中有地方建立嗎,是不是只能在查詢分析器中建立??

解决方案 »

  1.   

    主健生成非null的唯一索引,索引沒有
    索引是一種與資料表或檢視有關的磁碟內存結構,它會加快從該資料表或檢視中擷取資料列的速度。索引中包含從資料表或檢視中一或多個資料行建出的索引鍵。這些索引鍵儲存在結構中 (B 型樹狀目錄),讓 SQL Server 可以快速有效地找到與索引鍵值相關的一或多個資料列。 資料表或檢視可包含下列類型的索引:叢集 
    叢集索引將資料表或檢視中的資料列依其索引鍵值排序與儲存。這些就是索引定義中包含的資料行。因為資料列本身只能以一種順序排序,所以每個資料表只能有一個叢集索引。 
    只有當資料表包含叢集索引時,資料表中的資料列才會以排序順序儲存。當資料表有叢集索引時,資料表又稱為叢集資料表。如果資料表沒有任何叢集索引,它的資料列就儲存在未排序的結構中,這個結構稱為堆積。 
    非叢集 
    非叢集索引有一個與資料列完全分開的結構。非叢集索引包含非叢集索引鍵值,而每個索引鍵值項目都有一個指標,指向包含索引鍵值的資料列。 
    從非叢集索引中的索引列指向資料列的指標被稱為資料列定位器。資料列定位器的結構須視資料頁儲存在堆積或叢集資料表而定。若是堆積,資料列定位器是指向資料列的指標。若是叢集資料表,資料列定位器就是叢集索引鍵。 
    在 SQL Server 2005 中,您可以將無索引鍵資料行加入非叢集索引的分葉層級中,以規避現有索引鍵的限制 (900 位元組和 16 個索引鍵資料行),並執行完全涵蓋的索引查詢。如需詳細資訊,請參閱<具有內含資料行的索引>。 
      

  2.   

    當 PRIMARY KEY 條件約束加入資料表中的一或多個現有資料行時,SQL Server 2005 Database Engine 會檢查現有的資料行資料及中繼資料,以確認符合主索引鍵的下列規則:資料行不允許使用 Null 值。建立資料表時所指定的 PRIMARY KEY 條件約束資料行會以隱含方式轉換為 NOT NULL。
    不能有重複的值。如果將 PRIMARY KEY 條件約束加入具有重複值或允許 Null 值的資料行,Database Engine 會傳回錯誤,且不會加入條件約束。
    您無法加入違反這些規則的 PRIMARY KEY 條件約束。Database Engine 會自動建立唯一的索引,以強制執行 PRIMARY KEY 條件約束所需的唯一性。如果資料表中沒有叢集索引,或未明確指定非叢集的索引,會建立一個唯一的叢集索引來強制執行 PRIMARY KEY 條件約束。如果下列情形存在,將無法刪除 PRIMARY KEY 條件約束:另一個資料表中的 FOREIGN KEY 條件約束正在參考它;這種情況下需先刪除該 FOREIGN KEY 條件約束。
    資料表已套用了 PRIMARY XML 索引。
    若要在建立資料表時建立 PRIMARY KEY 條件約束 
     
      

  3.   


    默认情况下,建了主键,sqlserver自动会在此主键上加聚集索引