Tom*_*ton 4 sql t-sql sql-server performance sql-server-2008
我有一个执行速度慢的查询,并希望有更多sql知识的人可以帮助我提高性能:
我有2个表一个Source和一个Common,我加载一些数据,其中包含Date,Time和String(whch是服务器名称),加上一些..
Source表可以包含40k +行(它有30个奇数列,包含整数,日期,时间和一些varchars(255)/(Max)
我使用以下查询从源中的Common中删除任何数据:
'Delete from Common where convert(varchar(max),Date,102)+convert(varchar(max),Time,108)+[ServerName] in
(Select convert(varchar(max),[date],102)+convert(varchar(max),time,108)+ServerName from Source where sc_status < 300)'
源字段采用以下格式:
Common Fields采用以下格式:
谢谢
将两边转换为字符串,然后将它们连接成一个大字符串,然后比较这些结果效率不高.只进行必要的转换.试试这个例子,看看它是如何比较的:
DELETE c
FROM dbo.Common AS c
INNER JOIN dbo.Source AS s
ON s.ServerName = c.ServerName
AND CONVERT(DATE, s.[Date]) = c.[Date]
AND CONVERT(TIME(7), s.[Time]) = c.[Time]
WHERE s.sc_status < 300;
Run Code Online (Sandbox Code Playgroud)