TheGameiswar Asked: 2016-07-27 03:36:50 +0800 CST2016-07-27 03:36:50 +0800 CST 2016-07-27 03:36:50 +0800 CST SQLServer 中的 BMK 运算符是什么 772 我试图回答这个问题,说明 from 子句是可选的..但是我被计划中的运算符卡住了..下面是执行计划的屏幕截图.. 如您所见,查询计划中有 BMK 运算符,但没有显示它是如何计算的。 到目前为止我尝试过的步骤: 我开始使用 BMK1000 进行搜索,但它显示了同一个操作符的一堆问题。最后我找到了一个线程,上面写着“你引用的 BMK 是堆中的存储位置被保留使用非聚集索引而不是集群键。”..但不确定这与我有什么关系,因为我没有任何索引.. 问: 什么是 BMK 运算符以及它是如何计算的。任何指针也会有所帮助 这是重现问题的SQLFiddle sql-server execution-plan 1 个回答 Voted Best Answer Martin Smith 2016-07-27T05:09:44+08:002016-07-27T05:09:44+08:00 它本身不是运营商。它是堆上表扫描运算符的输出列。它是包含行的物理地址的“书签”(这与短语“书签查找”中提到的书签相同)。 这将沿着管道传递到更新运算符,因此它知道应该更新的行。 query_trace_column_values在 SQL Server 2016 中,您可以使用扩展事件查看此列的实际值 将它们插入sys.fn_PhysLocFormatter显示file:page:slot SELECT sys.fn_PhysLocFormatter(0xB002000001), sys.fn_PhysLocFormatter(0xB0020000010001) 退货 +------------------+------------------+ | (No column name) | (No column name) | +------------------+------------------+ | (1:688:0) | (1:688:1) | +------------------+------------------+
它本身不是运营商。它是堆上表扫描运算符的输出列。它是包含行的物理地址的“书签”(这与短语“书签查找”中提到的书签相同)。
这将沿着管道传递到更新运算符,因此它知道应该更新的行。
query_trace_column_values
在 SQL Server 2016 中,您可以使用扩展事件查看此列的实际值将它们插入
sys.fn_PhysLocFormatter
显示file:page:slot
退货