gpt4 book ai didi

sql - 使用 WHERE 删除 - 日期、时间和字符串比较 - 非常慢

转载 作者:行者123 更新时间:2023-12-03 02:46:54 25 4
gpt4 key购买 nike

我的查询执行速度很慢,希望对 sql 有更多了解的人能够帮助我提高性能:

我有 2 个表,一个源表和一个公共(public)表,我加载一些数据,其中包含日期、时间和字符串(这是服务器名称),再加上一些..

源表可以包含 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)'

源字段采用以下格式:

  • 服务器名称 varchar(255) I.E SN1234
  • 日期 varchar(255) I.E2012-05-22
  • 时间 varchar(255) I.E 08:12:21

公共(public)字段采用以下格式:

  • 服务器名称 varchar(255) I.E SN1234
  • 日期日期I.E2011-08-10
  • 时间 time(7) I.E14:25:34.0000000

谢谢

最佳答案

将两边都转换为字符串,然后将它们连接成一个大字符串,然后比较这些结果,效率不是很高。仅在必要时进行转换。尝试这个例子并看看它的比较:

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;

关于sql - 使用 WHERE 删除 - 日期、时间和字符串比较 - 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10710211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com