我有这样的要求:
SELECT myTable.ID,
myTable.Adress,
-- 20 more columns of all kind of type
FROM myTable
WHERE EXISTS(SELECT * FROM myLink
WHERE myLink.FID = myTable.ID
and myLink.FID2 = 666)
myLink有很多行。
你认为这样做会更快:
INSERT INTO @result(ID) SELECT myLink.FID
FROM myLink
WHERE myLink.FID2 = 666
UPDATE @result SET Adress = myTable.Adress,
-- 20 more columns of all kind of type
FROM myTable
WHERE myTable.ID = @result.ID
答案 0 :(得分:2)
您需要选择尽可能少的行。使用where子句来过滤数据是个好主意,因为服务器必须返回更少的数据。在第二个版本中,你只选择myLink的一个项目,然后再进行处理,而在第一个例子中你有一个select *,这通常是一个坏主意。
是否有任何问题:
SELECT myTable.etc from myTable,myLink where myLink.FID2= 666 AND myLink.ID=myTable.ID
这会在一个步骤中构建连接和过滤器。也许不同类型的连接可以更有效地工作,但代码确实看起来更短。