Я предпочитаю кодировать в 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, self-join и т. Д.) *
Но мой вопрос - я испытываю снижение производительности, обращаясь к базе данных таким образом.
У меня еще недостаточно собранных данных, чтобы можно было измерить разницу, но я буду в какой-то момент в будущем.
Я хотел бы узнать, прежде чем продолжить. Я не хотел бы возвращаться позже и перекодировать все, чтобы улучшить производительность.