【发布时间】:2010-11-09 04:07:17
【问题描述】:
我更喜欢在 t-sql 中使用实际上是内联连接的代码,而不是在存储过程或视图的末尾有一个长长的连接列表。
例如,我编码:
SELECT PKey , Billable,
(SELECT LastName FROM Contact.dbo.Contacts WHERE (Pkey = Contacts_PKey)),
(SELECT Description FROM Common.dbo.LMain WHERE (PKey= DType)),
(SELECT TaskName FROM Common.dbo.LTask WHERE (PKey = TaskType)) ,
StartTime, EndTime, SavedTime
FROM dbo.TopicLog where StartTime > '7/9/09' ORDER BY StartTime
而不是
SELECT t.PKey, t.Billable, c.LastName, m.Description, lt.TaskName, t.StartTime, t.EndTime, t.SavedTime
FROM dbo.TopicLog AS t
inner join Contact.dbo.Contacts as c on c.Pkey = t.Contacts_PKey and t.StartTime > '7/9/09'
inner join Common.dbo.LMain as m on m.PKey = t.DType
inner join Common.dbo.LTask as lt on lt.PKey = t.TaskType
ORDER BY t.StartTime
我更喜欢这种类型的语法,因为它在编写或调试时不太容易混淆,尤其是当有许多表被连接或其他事情发生时(case 语句、t-sql 函数、自连接等)
但我的问题是 - 以这种方式查询数据库会影响性能。
我还没有收集到足够的数据来衡量差异,但我会在以后的某个时候。
我想在继续之前先了解一下。我不想稍后再回去重新编码以提高性能。
【问题讨论】:
标签: sql-server sql-server-2005 tsql join