這可能是一個非常愚蠢的問題,但索引數據庫表中的布爾型字段會有多大好處嗎?給定一種常見的情況,如「軟刪除」被標記爲非活動狀態的記錄,因此大多數查詢包括WHERE deleted = 0
,它是否有助於讓該字段自行索引,還是應該與其他常用的索引組合使用搜索不同索引的字段?索引布爾字段
索引布爾字段
回答
編號
您可以搜索具有高選擇性/基數的字段。幾乎任何表格中都會刪除一個布爾字段的基數。如果有的話,它會讓你的寫入變慢(通過一個很小的數量)。
也許你會使它成爲聚集索引中的第一個字段,如果每個查詢考慮到軟刪除?
想象一個擁有數千頁的大書。頁面包含單個字母,'A'或'B'和一個隨機數字。如果您在A和B頁面沒有混合但書本從A頁面開始,然後是B開始的情況下找到某個您知道它位於「A」頁面之一的隨機數字條目,您是否有好處?是的,你會..所以我猜你錯了.. – tObi 2016-09-25 12:29:43
我認爲這會有所幫助,特別是在涵蓋指數方面。
多少/少數當然依賴於您的數據和查詢。
你可以有各種關於索引的理論,但最終答案是由數據庫中的數據庫引擎提供的真實數據。通常你會對答案感到驚訝(或者我的理論太糟糕了)
檢查查詢的查詢計劃並確定查詢是否可以改進,或者索引是否可以改進。 這很簡單,改變指標,看看它有什麼區別
+1:我沒有看到在索引列中造成的危害 – 2009-12-04 05:29:18
@OMGPonies危害在於額外的寫入開銷,在擁有大量行的繁忙表上,這實際上可以降低查詢性能。只有高基數和查詢才能充分利用,這只是一個好處。 – oucil 2013-12-10 20:14:15
我認爲這將有助於如果你使用的是一個視圖(其中刪除= 0),你經常從這個視圖查詢。
我認爲如果你的布爾型字段在很多情況下會引用它們,那麼有一個單獨的表,例如DeletedPages或SpecialPages,它會有許多布爾類型字段,比如is_deleted
, is_hidden
,is_really_deleted
,requires_higher_user
等等,然後你就可以加入它們。
通常情況下,這個表的大小會更小,並且通過接受連接會獲得一些優勢,特別是就代碼可讀性和可維護性而言。而對於這種類型的查詢:
select all pages where is_deleted = 1
這將是更快的把它實現的是這樣的:
select all pages where pages
inner join DeletedPages on page.id=deleted_pages.page_id
我想我的地方閱讀有關您需要的字段在MySQL數據庫至少有3的基數使該領域的索引工作,但請確認這一點。
很難說布爾值是如此薄,我們沒有任何數據,但是會產生連接,每個查詢的工作流程都會使查詢變慢,而不是更快,特別是如果主鍵的集羣不同,每個查詢都需要deleted_pages表。 – 2009-12-04 05:51:17
什麼是deleted_at DATETIME列?有兩個好處。
- 如果你需要一個像名稱的唯一列,您可以創建和軟刪除具有相同名稱多次記錄(如果您使用deleted_at列和名稱的唯一索引)
- 您可以搜索爲最近刪除的記錄。
您查詢看起來是這樣的:
SELECT * FROM xyz WHERE deleted_at IS NULL
如果您使用的是支持位圖索引(如Oracle)數據庫,然後在布爾列這樣的索引將有用得多比沒有。
- 1. 在布爾字段中添加索引
- 2. MySQL:兩個布爾字段的索引
- 3. 布爾檢索,索引階段
- 4. TensorFlow布爾索引
- 5. symfony3:query_builder按布爾型字段搜索
- 6. 在elasticsearch中是否需要布爾型字段索引
- 7. 由布爾字段
- 8. IndexingError使用布爾索引
- 9. 熊貓布爾索引
- 10. Numpy教程 - 布爾索引
- 11. numpy布爾索引混淆
- 12. 在xarray布爾索引
- 13. 在sphinx中將一個布爾型字段索引爲一個字符串
- 14. Rails中的布爾字段
- 15. Kotlin,JPA和布爾字段
- 16. 查詢空布爾字段
- 17. 命名布爾字段
- 18. ZF2 + DoctrineORMModule +布爾字段
- 19. 問題布爾字段
- 20. 索引大量字段與索爾單位
- 21. 按索引排序方面字段不計在索爾
- 22. 太陽黑子/索爾:索引時間字段結果NumberFormatException
- 23. 使用布爾值(true)作爲唯一索引字段在Oracle中創建表
- 24. solrnet查詢獲取布爾類型字段的過濾器索引到solr
- 25. MultiIndex df(熊貓)布爾索引
- 26. 如何索引寬泛的布爾表
- 27. numpy數組索引布爾值
- 28. 熊貓多指數布爾索引
- 29. 獲取索引的布爾向量
- 30. 試圖理解布爾數組索引
可能重複[索引布爾型字段是否有任何性能增益?](http://stackoverflow.com/questions/10524651/is-there-any-performance-gain-in-indexing-a-boolean-字段) – 2016-04-13 12:14:04
@AmirAliAkbari:哦!沒有!循環參考!希望S.O.不會爆炸! – Paul 2017-02-01 14:49:49