65
A
回答
85
最好的解釋來from Tom Lane,這是該算法的作者,除非我弄錯。另請參閱wikipedia article。
總之,這是一個有點像序列掃描。區別在於,與其訪問每個磁盤頁面不同,位圖索引掃描AND和ORs適用索引,並且只訪問它需要的磁盤頁面。
這是一個索引掃描,其中指數是由行順序訪問行的不同 - 這意味着一個磁盤頁面可能會多次訪問。
回覆:您的評論中的問題...是的,就是這樣。
索引掃描將通過行一個接一個,一次又一次地打開磁盤頁面,需要多次(當然留在記憶的一些意願,但你明白了吧)。
位圖索引掃描將按順序打開磁盤頁面的短列表,並抓取每個磁盤頁面中的每個適用行(因此您在查詢計劃中看到所謂的複檢cond)。
請注意,另一方面,聚類/行順序如何影響任一方法的相關成本。如果行以隨機順序遍佈整個地方,則位圖索引將更便宜。 (事實上,如果它們確實是全部以上的地方,seq掃描將是最便宜的,因爲位圖索引掃描不是沒有一些開銷。)
相關問題
- 1. 爲什麼我的查詢計劃會生成索引掃描?
- 2. postgres中的Seq掃描和位圖堆掃描有什麼區別?
- 3. 瞭解緩慢位圖掃描堆在LIKE查詢
- 4. 在mysql查詢計劃中發生意外的索引掃描
- 5. Postgres緩慢的位圖堆掃描
- 6. SELECT DISTINCT,擺脫位圖堆的掃描
- 7. 計劃磁盤掃描
- 8. 如何確定位圖堆掃描和索引掃描?
- 9. 查詢掃描和藍牙堆棧
- 10. Postgres:加速位圖堆掃描?
- 11. 堆中的併發標記掃描生成是什麼?
- 12. 什麼是VGA編程中的「掃描」?
- 13. 什麼是MongoDB中的集合掃描?
- 14. 什麼是掃描:Java中的塊?
- 15. MonetDB查詢計劃解釋中的語句是什麼意思?
- 16. SQLite查詢計劃中的數字是什麼意思?
- 17. Oracle中的單行子查詢 - 連接計劃是什麼?
- 18. 爲什麼在我的查詢中使用秒掃描Postgresql
- 19. 什麼是PNO的區別掃描和WLAN預設掃描?
- 20. 計劃掃描wpa_supplicant守護進程
- 21. 爲什麼在此查詢中使用聚簇索引掃描?
- 22. 爲什麼我的查詢執行聚集索引掃描
- 23. 爲什麼查詢掃描發現8X倍的文件 -
- 24. CSS掃描媒體查詢
- 25. greenplum中的表掃描和seq掃描有什麼區別
- 26. 位圖掃描0,跨越
- 27. 是什麼導致DMV顯示NULL查詢計劃?
- 28. 什麼是「掃描工作副本」
- 29. 這個子查詢爲什麼要執行表掃描?
- 30. 爲什麼Oracle對此查詢使用跳過掃描?
因此,「位圖堆掃描」:一頁不能一次訪問!但是「索引可以」:一個頁面可以被訪問多次,因爲索引是按順序逐行訪問的。 – francs