SQL自连接优化

时间:2017-01-26 22:24:10

标签: sql sql-server

我正在编写一个需要大表自行连接的查询(> 100万行)

我只对今天创建的行感兴趣,我可以使用包含纪元时间的recording_time列进行过滤。

但是,我不确定以下查询实际上是在进行连接之前限制表。

SELECT B.ani
  FROM [app].[dbo].[recordings] B
  INNER JOIN [app].[dbo].[recordings] A
  ON B.callid = A.callid AND B.dnis = A.ani
  where A.filename LIKE '%680627.wav'
  AND B.recording_time > 1485340000

1 个答案:

答案 0 :(得分:1)

过滤今天创建的行并使用该新表加入。

SELECT B.ani 
FROM ( SELECT * FROM [app].[dbo].[recordings] where recording_time > 1485340000 ) B
INNER JOIN ( SELECT * FROM [app].[dbo].[recordings] where recording_time > 1485340000 ) A
ON B.callid = A.callid AND B.dnis = A.ani
where A.filename LIKE '%680627.wav'