Toán tử BMK trong SQLServer là gì


8

Tôi đã cố gắng trả lời câu hỏi này trong đó nêu từ mệnh đề là tùy chọn..Nhưng tôi bị mắc kẹt với một Người vận hành trong kế hoạch..hay là ảnh chụp màn hình của kế hoạch thực hiện ..

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy có toán tử BMK trong kế hoạch truy vấn, nhưng không có dấu hiệu nào cho thấy cách tính toán của nó ..

Các bước tôi đã thử cho đến nay:
Tôi đã bắt đầu tìm kiếm với BMK1000, nhưng nó cho thấy một loạt các câu hỏi với cùng một nhà điều hành . Cuối cùng tôi đã tìm thấy một chủ đề có nội dung "BMK mà bạn đang tham khảo là vị trí lưu trữ trong heap được giữ với chỉ mục không bao gồm thay vì khóa cụm. ".. Nhưng không chắc điều này có liên quan đến tôi như thế nào, vì tôi không có bất kỳ chỉ mục nào ..

HỎI:
toán tử BMK là gì và cách tính toán. Mọi con trỏ cũng sẽ rất hữu ích

Đây là SQLFiddle để Repro vấn đề

Câu trả lời:


11

Đó không phải là một nhà điều hành theo đúng nghĩa của nó. Nó là một cột đầu ra từ toán tử quét bảng trên heap. Đó là "dấu trang" chứa địa chỉ vật lý của hàng (đây là dấu trang giống như được đề cập trong cụm từ "tra cứu dấu trang").

Điều này được truyền dọc theo đường ống vào toán tử cập nhật để nó biết hàng cần cập nhật.

Trong SQL Server 2016, bạn có thể thấy các giá trị thực tế cho cột này bằng cách sử dụng query_trace_column_valuessự kiện mở rộng

nhập mô tả hình ảnh ở đây

Cắm chúng vào sys.fn_PhysLocFormattercho thấyfile:page:slot

SELECT sys.fn_PhysLocFormatter(0xB002000001), 
       sys.fn_PhysLocFormatter(0xB0020000010001)

Trả về

+------------------+------------------+
| (No column name) | (No column name) |
+------------------+------------------+
| (1:688:0)        | (1:688:1)        |
+------------------+------------------+
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.