我有一个 Left Join SQL 查询 (2012),它报告了 00:00:00 秒的执行时间,底部没有 Order By 子句。添加“Order By”会使查询花费 00:00:24 秒!
这是正常的吗?
很明显,我在这里遗漏了一些相当基本的概念,但我会假设执行了查询,然后对结果进行了排序。显然情况并非如此,请有人指出我正确的方向吗?
其他一些信息:我加入的两个表分别有大约 35,000 行和 22,000 行。我正在选择一个日期范围,左连接发生在两个字符串上。结果集介于 300 - 400 个结果之间。我知道比较字符串会有很大的惩罚,我猜这是问题的一部分。
这是SQL:
DECLARE @mystartdate as datetime
SET @mystartdate = CAST(CAST((GETDATE() - 0) AS date) as nvarchar) + ' 06:00:00'
DECLARE @myenddate as datetime
SET @myenddate = CAST(CAST((GETDATE() + 1) AS date) as nvarchar) + ' 05:59:59'
SELECT SUBSTRING(CAST([Event_Time] AS nvarchar),0,9) AS mytime
,[CombinedDateTime]
,[MediaFileName]
,[Duration]
,[High_Definition]
FROM [dbo.schedules]
LEFT JOIN dbo.subtitles
ON REPLACE(SUBSTRING(dbo.subtitles.sub_filename, 1, LEN(dbo.subtitles.sub_filename) -4), '-', '') = REPLACE(dbo.schedules.MediaFileName,'/','')
WHERE [CombinedDateTime] >= @mystartdate AND [CombinedDateTime] <= @myenddate
Order by CombinedDateTime
谢谢