我有一列 - objectState
,它只有3個值。但是這個列用於許多查詢。如果我爲此專欄編制索引,是否會改善性能?該表格相當大在有許多記錄但數據值很少的行上使用索引
0
A
回答
1
這取決於:-)
數據庫管理系統通常會使用索引的時候只有極少數的記錄將被訪問。因此,如果您的數據對於A值爲20%,對於B值爲40%,對於C值爲40%,並且您將選擇具有值A的記錄,那麼這仍然是大表格的20%。不是掃描索引,而是掃描整個表格,而不是掃描索引。另一方面,如果A是1%,B和C是99%,那麼是的,當選擇具有A值的記錄時,索引是一件好事。
說了這話之後,你的dbms必須知道在適當的時候使用索引的情況。例如,Oracle DBMS可以這樣做,只要您確保數據庫中可以找到該特定列上的最新直方圖。
弱dbms可能會被索引弄糊塗,猜測索引的存在僅僅暗示它的有用性。他們可能會在不應該的時候使用索引。
最後一些dbms能夠組合索引。 Oracle通過所謂的位圖索引來實現這一點,這些索引專爲少數值的colums而設計。所以你可能會問性別=女性,年齡組=年輕,購物愛好者=是和豐富=真實。所有這些列上的位圖索引都會導致在訪問表記錄之前添加這些位圖索引。可能只有性別= 50%的女性和50%的男性,但儘管看起來不像指數會對此有所幫助,但它會與其他指標結合使用。
所以讓我重複一遍:它取決於:-)
0
您可以使用位圖索引。如果色譜柱具有較低的基數,它們可以提供更好的性能。
相關問題
- 1. 索引索引中缺少記錄?
- 2. Cassandra - 在具有許多唯一值的多列上索引
- 3. 使用面記錄數據表上的多行數據
- 4. 數據庫中的很多記錄
- 5. 在SQL Server上插入許多記錄之前禁用索引是一種很好的做法嗎?
- 6. GAA上的JPA:查找不返回記錄,但數據存儲的記錄很少
- 7. 爲什麼Hibernate Search很慢?即使有很少的記錄
- 8. 有效的Javascript對象使用多個數組索引進行過濾。使用Node之前有多少數據?
- 9. 在lucene中索引數據庫記錄
- 10. 在SQL數據庫中有很多索引的缺點?
- 11. 在關係數據很少的數據上使用NoSQL
- 12. 一個很多查詢,其中許多有一個記錄
- 13. 在很多記錄上的日期時間搜索性能
- 14. 如何將索引頁上的記錄按多個值排序?
- 15. 從表中檢索列可能有多行數據的記錄
- 16. 可以在iPhone上的sql-lite中重新索引多少條記錄?
- 17. 在有很多記錄的大表中搜索/查詢
- 18. 許多文件的標記和索引
- 19. 許多數據到一個記錄MYSQL
- 20. 在數據框上標記索引
- 21. 在MySQL中有多條記錄,信息較少或有很多信息的記錄
- 22. 索引是否有大量列但少量記錄的幫助表?
- 23. 索引中的記錄數
- 24. 在科爾多瓦項目中使用索引數據庫添加記錄
- 25. Azure搜索:在多個數據源上使用單個索引
- 26. 是否有一個索引不具有許多不同值的數據庫列?
- 27. 記錄多少
- 28. Ember數據有許多記錄僅在canonicalState屬性中加載
- 29. 索引在許多到很多關係grails
- 30. 插入一個在kdb中有很多空值的記錄
將取決於查詢處理表。什麼阻止你測試它? – MarkD
我想有一些理論背景 – Anarion
它可以提高性能,例如,如果其中一個值表示低表的一組表 –