Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 如何提高此select into查询的性能_Sql Server - Fatal编程技术网

Sql server 如何提高此select into查询的性能

Sql server 如何提高此select into查询的性能,sql-server,Sql Server,如果有人建议如何通过以下查询提高存储过程的性能,我将不胜感激。这些函数非常小,我认为它们不会影响性能: SELECT DISTINCT REPLACE(REPLACE(REPLACE(c.[description], ' Org',''), ' group',''),'Organization full name','Org')

如果有人建议如何通过以下查询提高存储过程的性能,我将不胜感激。这些函数非常小,我认为它们不会影响性能:

    SELECT  DISTINCT REPLACE(REPLACE(REPLACE(c.[description], ' Org',''), ' group',''),'Organization full name','Org') 
                                                                                                AS OrgColumn1, 

                REPLACE(REPLACE(c.[description], ' Org',''), ' group','') + ' Organization'     AS OrgColumn2, 

                CASE 
                    WHEN dbo.fn_OrgGrantPageAccess(c.id,@contactId) = 1 
                    AND (c.id <> 13 AND c.id <> 31) 
                        THEN '<a href="OrgMainPage.aspx?id='+CAST((c.id) as varchar(15))+'">'+
                        replace(replace(c.[description], ' Org',''), ' group','') + ' Org</a>' 

                    WHEN dbo.fn_OrgGrantPageAccess(c.id,@contactId) = 1 
                    AND (c.id = 13 OR c.id = 31) 
                        THEN '<a href="OrgMainPage.aspx?id='+CAST((c.id) as varchar(15))+'">'+
                        c.[description]+'</a>'
                    ELSE 
                    replace(replace(c.[description], ' Org',''), ' group','') + ' Org' 
                END                                                                             AS OrgColumn3, 

                c.id                                                                            AS OrgColumn4,
                dbo.fn_OrgGetColumn5(c.id)                                                      AS OrgColumn5,
                dbo.fn_OrgGetColumn6(c.id)                                                      AS OrgColumn6,
                dbo.fn_OrgGetColumn7(c.id)                                                      AS OrgColumn7,
                dbo.fn_OrgGetColumn8(c.id)                                                      AS OrgColumn8,
                dbo.fn_OrgGetColumn9(c.id)                                                      AS OrgColumn9,
                dbo.fn_OrgGetColumn10(c.id)                                                     AS OrgColumn10

INTO            #T

FROM            table_c                 c

INNER JOIN      table_s                 s 
ON              c.id                    =s.id

INNER JOIN      table_t                 t 
ON              s.type_id               = t.type_id

LEFT OUTER JOIN table_m                 m 
ON              c.id                    = m.OrgID

LEFT OUTER JOIN table_cal               cal 
ON              m.meetingid             = cal.calid

WHERE           t.type_id               = 3
AND             active                  = 1
AND             (c.org_1                = 1 
OR              c.org_1                 = 3)

ORDER BY        OrgColumn1
我建议您将dbo.fn_OrgGetColumn函数从标量值重写为表值,然后交叉应用于主结果集。 如果您可以为dbo.fn_OrgGetColumn函数提供源代码,我可以帮助您将其重写为表值函数


在这里,您可以通过示例找到很好的解释:

Hi,您应该做的第一件事是通过数据库引擎优化顾问运行它。这将告诉您它推荐的索引和统计信息。您可以看到相当大的改进。具有数据访问功能的Calar函数可能会降低性能。检查很容易-从select中删除函数调用并检查执行时间。不可能查看SQL文本并告诉它为什么慢。性能取决于更多的东西,如模式和数据。信息不足,无法回答。感谢您的回答,Andrey和Dean!我已经用SELECT TOP 1或SELECT max替换了标量值函数,我看到了很大的改进。再次感谢。