我知道我們使用主鍵來唯一標識每一行,但是如果我們用代碼管理所有的代碼呢?主鍵有什麼用途?爲什麼我們使用主鍵如果我們管理唯一性和從代碼自動增量?
0
A
回答
0
- 使用主鍵沒有索引ID列的身份,從數據庫 父行的用戶刪除會迫使SQL Server查詢引擎掃描外鍵引用的子表 ,以確保數據完整性不是 受損。考慮一個包含數十萬行 行的子表;一個索引可以大大加快查找速度。
- 的外鍵CASCADE選項(DELETE CASCADE,ON UPDATE CASCADE)性能可以顯着地與索引的使用 因爲引擎進行查詢,以搜索將自動刪除或行 得到改善更新。
- 外鍵列上的父子表之間的JOIN性能大大提高。這是一個自然的假設 有關的表可以被一起查詢以產生 結果集。考慮先前的ORDERHEADER/LINEITEM例子。要執行的查詢,將要求不 僅行項目的元素,但也ORDERHEADER的這 很自然(如 訂單日期,誰進入了CSR的順序)
- 在開發和維護的數據模型,檢驗您的模型 可受益於外鍵關係
- 確保您的外鍵列已建立索引,以防止在數據刪除,級聯操作和查詢JOIN期間進行表掃描 。
0
通過定義主鍵,您通過鍵獲取數據會更快。
0
相關問題
- 1. 爲什麼我們使用表中的ID列如果我們有一個唯一的值
- 2. 我們爲什麼要使用`realloc`如果我們需要一個'TMP buffer`
- 3. 爲什麼我們使用常量?
- 4. ios sdk中的促銷代碼是什麼?爲什麼我們使用它們?
- 5. 如果我們可以使用代碼庫,applets中的主參數是什麼?
- 6. 如果我們更改主鍵值,爲什麼我們不必更改從屬列值?
- 7. 爲什麼我們使用ChangeAwareList和ChangeAwareMap
- 8. 爲什麼我們需要依賴管理的複雜性
- 9. 爲什麼我們用擲鍵異常
- 10. 爲什麼我們使用ORM或ODM來管理任何graphDB?
- 11. 爲什麼JIT如果我們有NGEN
- 12. 爲什麼我即使我輸入他們在Visual Studio代碼
- 13. 爲什麼我們要在堆棧和堆上管理結構
- 14. 什麼是我們必須調用dispose託管代碼
- 15. 爲什麼我們在asp.net中使用代碼隱藏?
- 16. 如果我們需要在Rails中使用自定義ID,我們應該使用FriendlyID還是主鍵?
- 17. 爲什麼我們需要/使用託管代碼(通過本機)?
- 18. 外鍵 - 他們爲我做了什麼?
- 19. 裝配需要什麼?爲什麼我們使用它們?
- 20. 爲什麼我們在這段代碼中使用了「this」關鍵字?
- 21. 如何管理Rails中的非自動增量主鍵?
- 22. 爲什麼我們分別使用公共和私有變量
- 23. 爲什麼我們使用## * /表達式和bash變量
- 24. java - 我們可以做我們自己的內存管理嗎?
- 25. 爲什麼我們應該把JavaScript代碼放入一個IIFE?
- 26. 爲什麼我們使用「類自我」表達?
- 27. 爲什麼我們需要scalaz.stream迭代?
- 28. 用戶ID成爲主鍵和自動增量由它的自我
- 29. 爲什麼我們使用內部類?
- 30. 爲什麼我們使用Groovy中
看看這個帖子 https://stackoverflow.com/questions/831850/should-a-database-table-always-have-primary-keys –
那麼你不需要在DB PK。我看到相當大的應用程序在DB服務器端管理所有內容,沒有PK,沒有FK。只需創建一些索引來加速查詢 – Serg
三個可怕的迴應;他們都沒有解決你的(重複)問題。主要原因是什麼?因爲代碼是由犯錯的人編寫的,而且錯誤始終存在。從歷史中學習 - 您的課程應該涵蓋數據管理的歷史以及如何開發關係理論來解決數據不一致的問題。 – SMor