爲什麼插入語句在索引表上執行速度較慢?ORACLE在索引表上插入性能
5
A
回答
14
這實際上是同一種類的問題:
爲什麼要花更多的時間來把我所有的雜貨在正確的位置在我的廚房 比後,我訪問了我的雜貨袋把一切商店?
這是因爲當你存放你的雜貨時,你希望他們在一個很好的,衆所周知的位置,以便後來更容易找到它們。
一個數據庫也必須這樣做。
- 如果您有一個沒有索引的表,它可以在表的末尾添加新數據。
- 如果您有索引,數據庫必須執行更多工作。它可能仍然會將記錄放在表格的最後,但是它還會更新其索引,以確保如果您希望以後找到該記錄,它會比沒有索引時更快地找到它。
這也意味着添加更多索引會進一步減慢插入。
應該很清楚,如果您以後也會使用它,您只想創建一個索引。如果您只創建一個索引,並且以後不使用它來提高查詢的性能,則不需要索引,因爲它只會減慢插入速度,並且不會改進任何查詢。
9
INSERT
語句必須將數據添加到表數據塊並更新表定義的任何索引。
很明顯,如果你有一個索引,插入需要做更多的工作來更新索引。
1
索引允許您存儲更多關於幫助檢索數據的數據的更多信息(索引塊)。很顯然,你最初正在做額外的工作,以後才能受益(對於選擇)。
0
如果您需要從插入的表中稍後階段刪除一些數據,那麼在表上使用索引不是一個好主意。將數據插入表中所需的額外時間可通過索引表上運行得更快的刪除來進行補償(如果在刪除WHERE子句中使用了索引列)
+0
這並不回答所問的問題。另外,反對使用索引的通用建議(特別是沒有特定的上下文)是不好的建議。 – 2012-09-21 20:53:52
相關問題
- 1. 大索引插入性能下降(MYSQL)
- 2. MongoDB插入性能 - 巨大的表與幾個索引
- 3. 插入到Sql Server 2005上的全文索引表時,性能癱瘓
- 4. 插入聚簇索引表
- 5. 在空表上創建索引後插入數據或在Oracle上插入數據後創建唯一索引?
- 6. 在索引中插入一個列表
- 7. 在表中插入行/更新行時,哪個索引對性能有好處?
- 8. 可以在插入時在表上創建索引
- 9. MySQL表插入性能
- 10. 插入搜索項子索引索引
- 11. 索引中列的順序 - 插入性能
- 12. 刪除主鍵(聚集索引)以提高插入性能
- 13. 提高大規模索引數據庫的性能插入
- 14. 提高緩慢插入性能的多索引
- 15. 性能:插入或更新索引選擇
- 16. 全文索引 - 在多個表上巨大的性能下降
- 17. 在臨時表上添加聚簇索引以提高性能
- 18. 加入SQL Server索引性能
- 19. mysql索引性能
- 20. Lucene索引性能
- 21. Solr索引性能
- 22. mongodb搜索索引性能
- 23. Javascript:不插入右側索引行表
- 24. 插入排序錯誤列表索引
- 25. 鏈接列表中的索引插入
- 26. SQL:插入表並返回新索引?
- 27. 不能插入表中重複鍵行具有唯一索引
- 28. MySQL在大表上插入性能下降
- 29. MongoDB的索引和非索引性能
- 30. mysql表性能升級(索引
我喜歡類比;-) 。 – 2010-08-05 14:23:45
爲了讓這個比喻在學習上更加正確,我會說這就像是買了兩件雜貨品;一件物品以舊的順序進入食品室,重複的物品按照字母順序放在廚房的長凳上。當然,除非你使用索引組織的表格,在這種情況下,你不需要爲食品儲藏室獲取物品:) – 2012-06-05 07:05:08