Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 视图中的XML路径_Sql Server_Xml_Sql Server 2008 R2 - Fatal编程技术网

Sql server 视图中的XML路径

Sql server 视图中的XML路径,sql-server,xml,sql-server-2008-r2,Sql Server,Xml,Sql Server 2008 R2,我有一个视图,其中五个字段(不是其中的ID字段)与XML路径函数一起使用。该视图从ID为集群主键的表中填充值。该视图占用了大量的执行时间,造成了混乱。有人能帮忙吗 这就是我正在操作的视图 SELECT t1.ID, hcp = REPLACE((SELECT t2.hcp AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()] FROM d

我有一个视图,其中五个字段(不是其中的ID字段)与XML路径函数一起使用。该视图从ID为集群主键的表中填充值。该视图占用了大量的执行时间,造成了混乱。有人能帮忙吗

这就是我正在操作的视图

SELECT t1.ID,
hcp = REPLACE((SELECT t2.hcp AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()]
                        FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID
                        ORDER BY t2.hcp--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),
       convert(Datetime,REPLACE((SELECT t2.hcptime AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()]
                        FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID and datalength(t2.hcptime)>0
                        ORDER BY t2.hcptime --,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),127) as hcptime,
      ims = REPLACE((SELECT t2.ims AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()]
                        FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID
                        ORDER BY t2.ims--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),
        convert(Datetime,REPLACE((SELECT t2.imstime AS [data()]
                         FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID and datalength(t2.imstime)>0
                        ORDER BY t2.imstime--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),127) as imstime,
         med = REPLACE((SELECT t2.med AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()]
                        FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID
                        ORDER BY t2.med--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),

        convert(Datetime,REPLACE((SELECT t2.medtime AS [data()]
                         FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID and datalength(t2.medtime)>0
                        ORDER BY t2.medtime--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),127) as medtime,

         sln = REPLACE((SELECT t2.sln AS [data()]--,t2.imstime AS [data()],t2.medtime AS [data()],t2.slntime AS [data()]
                        FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID
                        ORDER BY t2.sln--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),

        convert(Datetime,REPLACE((SELECT t2.slntime AS [data()]
                         FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t2
                        WHERE t2.ID = t1.ID and datalength(t2.slntime)>0
                        ORDER BY t2.slntime--,t2.imstime,t2.medtime,t2.slntime
                        FOR XML PATH('')),
                       ' ', ','),127) as slntime

       FROM dbo.STG_HCP_ATTESTTATION_ADDRESS_ATLAS t1
       GROUP BY ID,med,sln,ims,hcp

要处理12K记录并将其减少到10K,需要1小时的时间。原始表中的ID列上有索引,其中“dbo.STG\u HCP\u detectation\u ADDRESS\u ATLAS”视图正在运行。

您需要使用视图定义、表定义、表上的索引、针对视图使用的查询、,表中的行数、以秒或分钟计算的查询时间以及您认为应该花费的时间。如果经常这样做,可以编写SQL CLR聚合函数进行串联。至于您的问题,您通过xml进行连接的方法并不完全正确,为什么要将其转换为datetime?如果您可以使用一些示例数据添加表定义,并使用这些数据添加预期的输出,这样就可以验证查询重写是否按预期工作,这将非常有用。