Молчун
Зарегистрирован: 29 September 2002
Сообщения: 18
Примеры кода: 0
|
RE[3]: JOIN vs UDF |
10 November 2002 20:11 |
|
|
|
|
Как лучше сделать select ?
SELECT [HEARING_MUF_ID],
MUF_FNAME+' '+MUF_LNAME,
FROM [dbo].[HEARINGS]
left join MUF on HEARING_MUF_ID=MUF_ID
WHERE
[HEARING_KM_ID] = @HEARING_KM_ID
and [HEARING_DATE] <= @newdate
или с UDF
SELECT
[HEARING_MUF_ID],
dbo.uf_MUF_GetName([HEARING_MUF_ID]) as MUF_NAME,
FROM [dbo].[HEARINGS]
WHERE
[HEARING_KM_ID] = @HEARING_KM_ID
and [HEARING_DATE] <= @newdate
ALTER Function uf_MUF_GetName(@MUF_ID as int )
Returns varchar(50)
as
begin
declare @MUFNEName varchar(50)
select @MUFNEName=MUF_FNAME + ' ' + MUF_LNAME
from dbo.muf
where MUF_ID=@MUF_ID
return @MUFNEName
Есть очень много справочников,стоит ли использовать UDF ?
Не-а, не стОит.
А как все это в цифрах посмотреть что не стОит?
а то уж очень не хочеться делать по 35 join оф
Просто я думал что UDF запускаются только на выбранные по WHERE записи
а join на все?
Можно и не на все. В join condition можно указывать не только условие совпадения значений столбцов, по которому происходит объединение, но и другие условия.
BOL: Although join conditions usually have equality comparisons (=), other comparison or relational operators can be specified, as can other predicates.
Т.е. можно написать что-то вроде:
select table1.field1, table2.fieldN
from table1 inner join table2
on table1.joinField = table2.joinField
and table2.filterField = @myFilterValue
Удачи!
leo
|
|