Azure SQL 数据源的 Azure 搜索索引器使用高水位线列产生低效查询
Azure Search Indexer with Azure SQL datasource using High watermark column produce inefficient query
我有一个 Azure SQL table,它使用索引器同步到 Azure 搜索。
索引器数据源配置有 "change tracking policy" 高水位线列。
基于下面的link,建议对高水位线列使用rowversion数据类型。
https://docs.microsoft.com/en-us/azure/search/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers
所以我的 SQL table 有一个时间戳数据类型的 RowVersion 字段,上面定义了一个索引。
当我查看我的数据库的 Query Performance Insight 时,性能最差的查询之一如下:
(@hwm bigint)SELECT * FROM [dam].[Asset] WHERE [RowVersion] > @hwm ORDER BY [RowVersion]
我假设这是索引器进行的查询,因为执行次数与索引器的刷新频率相符。
注意这个查询是如何使用 bigint 参数的。
当我查看查询执行计划时,这会导致全索引扫描...查看谓词,它使用 CONVERT_IMPLICIT()
为什么索引器不使用正确的时间戳数据类型来防止这种转换?
感谢您报告此事!我们会调查选角问题。
但是,我认为使用集成更改跟踪会更好:https://docs.microsoft.com/en-us/azure/search/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers#sql-integrated-change-tracking-policy
你能改用那个吗?
我有一个 Azure SQL table,它使用索引器同步到 Azure 搜索。 索引器数据源配置有 "change tracking policy" 高水位线列。
基于下面的link,建议对高水位线列使用rowversion数据类型。 https://docs.microsoft.com/en-us/azure/search/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers
所以我的 SQL table 有一个时间戳数据类型的 RowVersion 字段,上面定义了一个索引。
当我查看我的数据库的 Query Performance Insight 时,性能最差的查询之一如下:
(@hwm bigint)SELECT * FROM [dam].[Asset] WHERE [RowVersion] > @hwm ORDER BY [RowVersion]
我假设这是索引器进行的查询,因为执行次数与索引器的刷新频率相符。
注意这个查询是如何使用 bigint 参数的。
当我查看查询执行计划时,这会导致全索引扫描...查看谓词,它使用 CONVERT_IMPLICIT()
为什么索引器不使用正确的时间戳数据类型来防止这种转换?
感谢您报告此事!我们会调查选角问题。
但是,我认为使用集成更改跟踪会更好:https://docs.microsoft.com/en-us/azure/search/search-howto-connecting-azure-sql-database-to-azure-search-using-indexers#sql-integrated-change-tracking-policy
你能改用那个吗?