使用 CURSOR 会提高在 SQL 中使用 PIVOT 查询的性能/速度吗?

Will the use of CURSOR improve the performance / speed of querying using PIVOT in SQL?

SQL.

数据库的 EAV(实体属性值)模型 的新手

只是一个背景:我正在使用 SQL Server 2016。 EAV 的使用是工作中的一种要求,所以我正在学习一步一步来做。

我最近学会了如何使用 200 进行动态 PIVOT 到 return 800+ 行 + EAV table 中的列

在此处查看详细信息:

虽然成功return了我需要的数据,但是执行速度太慢了——查询大概需要30分钟。顺便说一句,我使用的代码如下:

declare @pivot_col varchar(max);
declare @sql varchar(max);

select @pivot_col = STUFF( 
                             ( SELECT ',' + CAST([Col_Name] AS VARCHAR(max) ) AS [text()]  
                             FROM ( select distinct [Col_Name] from tbl_Values ) A 
                             ORDER BY [Col_Name] FOR XML PATH('')), 1, 1, NULL
                          );

set @sql = 'SELECT * 
            FROM ( SELECT [Row_ID], [Col_Name], [Col_Value] FROM tbl_Values ) AS a 
            PIVOT (
                    MAX([Col_Value])
                    FOR [Col_Name] in (' +  @pivot_col + ' )
                  ) AS p 
            ORDER BY [Row_ID]';

exec ( @sql );

我正在尝试将 CURSOR 与此合并,但并没有走多远。在我进行更深入的研究之前,您能否提供关于它是否对性能/速度有任何影响的意见?

谢谢!

找到了解决我的 PIVOT 查询性能不佳的方法:我被告知要在 table 中的 Row_ID 列上创建聚集索引。我 运行 下面的查询:

CREATE CLUSTERED INDEX IX_tbl_Values_Row_ID  
ON dbo.tbl_Values (Row_ID);   
GO  

我的问题之前需要 30 分钟才能加载的查询现在 运行 现在只需 6 秒!感谢@MohitShrivastava 的提示!绝对有效。

我在创建聚簇索引之前也提到过这个:
https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-clustered-indexes?view=sql-server-ver15