我創建一個列作爲主鍵,這是否會自動創建索引?或者我需要明確創建索引。我假設主鍵也保持索引主鍵和索引概念
主鍵和索引概念
回答
在SQL Server中創建一個主鍵將在該列上創建一個唯一的聚集索引。 或者更具體地從here
注PRIMARY KEY約束創建 聚集索引,如果沒有自動聚集 指數已經存在於 表,並在創建PRIMARY KEY 約束非聚集索引是沒有指定 。
所以不需要明確的創建索引禮儀? – Hacker 2010-07-20 15:25:26
如果您尚未在表格中指定聚簇索引,並且您沒有告訴它使用diff非聚簇索引,則會自動爲您創建索引和約束。 (作爲FYI,聚集索引對數據的順序進行物理排序,因此每個表只能有一個聚簇索引) – etoisarobot 2010-07-20 15:50:47
另一個提到索引(複數)的註釋。創建主鍵會創建一個單一的聚集索引,它不會奇蹟般地計算需要索引的位置併爲您創建索引。您可能會發現需要添加一些非聚集索引來提高性能。 – etoisarobot 2010-07-20 15:55:26
這應該清除一些空氣。
--creating a table without any primary key
CREATE table understanding_indexes
(P_Id int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
--
--checking for indexes
sp_helpindex understanding_indexes
輸出
The object 'understanding_indexes' does not have any indexes, or you do not have permissions.
--ADDING A NOT NULL CONSTRAINT
ALTER TABLE UNDERSTANDING_INDEXES
ALTER COLUMN P_Id INTEGER
NOT NULL
--ADDING A PRIMARY KEY Constraint, can only be done on column which are not null.
ALTER TABLE UNDERSTANDING_INDEXES
ADD PRIMARY KEY (P_Id)
sp_helpindex understanding_indexes
輸出
PK__understa__A3420A5702084FDA clustered, unique, primary key located on PRIMARY P_Id
總之,只要你在一個表中添加主鍵約束,它會自動將放在桌子上的聚集索引。
此插圖位於SQL Server 2008 R2上。
- 1. 索引訪問的概念
- 2. 如何構建概念搜索引擎?
- 3. Oracle是否有過濾索引概念?
- 4. 維度和DMQL的主要概念?
- 5. IBM Watson-提取關鍵字和概念
- 6. AngularJS的主頁概念?
- 7. 境界索引和主鍵
- 8. 外鍵和主鍵Postgres和索引
- 9. jdbctemplate概念和c#
- 10. 概念API和ABI
- 11. jQuery和javascript - 概念
- 12. MPI和SLURM概念
- 13. SMTP和POP3概念?
- 14. C++概念:無效引用功能概念
- 15. Berkeley DB中是否存在/需要'主鍵'和'外鍵'概念?如下所示
- 16. 概念
- 17. 概念
- 18. sqlite概念到coredata的概念?
- 19. 是否有ZODB一個主鍵概念對象
- 20. 抓UIviews的概念和UIViewcontrollers
- 21. C++概念和std :: cout
- 22. 概念和聲明順序
- 23. 編程問題和概念
- 24. watson和自定義概念
- 25. Eclipse RCP術語和概念
- 26. Mvc規則和概念
- 27. Magento - 初學者概念 - 主題結構
- 28. Iphone開發中的主頁面概念
- 29. Pywebsocket「房間」或「主題」概念
- 30. Winforms中的主子頁面概念
取決於數據庫的實現 - 你對哪個數據庫感興趣? – 2010-07-20 16:06:03