Trong khi nó dễ dàng được ghi nhận rằng NULL chỉ mất 1 bit trong tiêu đề tuple postgresql cho hàng, số lượng không gian nào mà NULL mất trong INDEX của cột rỗng (không phải bộ tuple, nhưng chỉ mục)? Có cùng 1 bit trong chỉ mục như trong bộ dữ liệu hay là kích thước kiểu dữ liệu cột đầy đủ (EG: số nguyên = 4 byte)? Bối cảnh cho câu hỏi là tôi có một bảng postgresql có 3 cột tham chiếu (EG: foo_id, bar_id và baz_id) và cho bất kỳ hàng nào, chỉ một trong các cột đó sẽ có giá trị (2 cột còn lại sẽ có giá trị). là NULL). Tuy nhiên, tôi cần tất cả 3 cột để được lập chỉ mục. Giả sử rằng mỗi cột là một số nguyên (4 byte trong postgresql), mỗi hàng phải chiếm 4 byte (cho cột không null) cộng với 2 bit (cho 2 cột trống). Tuy nhiên, nếu tôi thêm chỉ mục cho tất cả 3 cột, dung lượng lưu trữ cho 3 chỉ mục sẽ là 12 byte (nếu chỉ mục chiếm toàn bộ 4 byte cho giá trị null) hoặc 4 byte + 2 bit giống như trong tuple chính nó.Do NULLs chiếm không gian trong chỉ mục postgresql?
5
A
Trả lời
1
Các thói quen truy cập btree sử dụng PageGetItem() để lấy khóa thực tế từ chỉ mục. Vì vậy, tôi tin rằng các trang chỉ mục btree sử dụng cùng một lược đồ lưu trữ như các trang heap thông thường (bao gồm cả mặt nạ vô hiệu), chúng chỉ có thông tin điều hướng bổ sung trong vùng "đặc biệt" của trang để giữ tất cả các con trỏ btree.
Các vấn đề liên quan
- 1. Các cột rỗng có chiếm không gian bổ sung trong PostgreSQL không?
- 2. Do .bss phần zero khởi tạo biến chiếm không gian trong tập tin elf?
- 3. Liệu .hashcode() trả về một int khác do nén không gian chiếm hữu?
- 4. Dữ liệu không gian trong PostgreSQL
- 5. một thẻ chiếm thêm không gian trong html
- 6. PostgreSQL: chỉ mục GIN hoặc GiST?
- 7. Chỉ số UNREQUE của PostgreSQL không phải là duy nhất?
- 8. Ẩn hàng khỏi ListView mà không chiếm không gian
- 9. chỉ mục postgresql trên cột chuỗi
- 10. LINQ ExecuteCommand không hiểu nulls
- 11. Các cột mảng chỉ mục của PostgreSQL có được không?
- 12. Sử dụng Chỉ mục Không gian
- 13. Mảng chỉ mục của loại cột chuỗi trong PostgreSql
- 14. Do các trường dữ liệu SQLite rỗng có chiếm thêm bộ nhớ không?
- 15. Tại sao LinearLayout vô hình chiếm không gian?
- 16. Mảng lớn chiếm nhiều không gian bộ nhớ hơn
- 17. sql chia chuỗi theo không gian thành bảng trong postgresql
- 18. Triển khai các chỉ mục không gian trong Haskell?
- 19. Tôi cần chỉ mục không gian trong C
- 20. Chỉ mục không gian địa lý trong mongodb với node.js
- 21. Có lý do chính đáng nào cho tiêu đề ListView chiếm vị trí không?
- 22. UUID có phải là khóa chính trong PostgreSQL cung cấp hiệu suất chỉ mục không tốt?
- 23. Truy vấn không gian Postgresql quá chậm
- 24. tại sao chế độ xem của tôi trong postgresql không sử dụng chỉ mục?
- 25. MySQL GROUP_CONCAT với Nulls
- 26. Văn bản trong UITextView không hiển thị chính xác, ẩn, nhưng chiếm không gian
- 27. MySQL - Làm thế nào để tôi đếm Nulls và không Nulls?
- 28. Có bất kỳ tác hại nào để có chỉ mục trùng lặp trong Postgresql không?
- 29. Làm cho chiều rộng cột chiếm không gian sẵn có trong wxPython ListCtrl
- 30. Lý do không có chỉ mục nhóm trong SQL Server 2005
Vâng, một cách mà bạn có thể tự mình trả lời một phần - chúng không thể được đại diện bởi (chỉ) cùng một số byte theo yêu cầu của kiểu dữ liệu. Trong ví dụ int của bạn, mọi kết hợp có thể có của 4 byte đại diện cho một giá trị int hợp lệ - vì vậy không có cách nào một null có thể được mã hóa trong bốn byte đó. –