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替换了标量值函数,我看到了很大的改进。再次感谢。