Рефакторинг сравнения COALESCE - PullRequest
0 голосов
/ 31 мая 2018

В разделе OR предложения WHERE у меня есть что-то вроде этого:

COALESCE(Table2.FireDate, Table1.HireDate,'06/06/2079') = ISNULL(Table3.DeathDate,'06/06/2079')

Я хотел бы увидеть, есть ли способ избежать вызова COALESCE и при этом достичь того же результата?Я надеюсь, что по возможности получу некоторую производительность.

1 Ответ

0 голосов
/ 31 мая 2018

Я не уверен, что производительность будет лучше.Но вы можете избавиться от слияния, как хотите:

declare @fireDate date = null -- '01/20/2017'
declare @hireDate date = '01/20/2017'
declare @deathDate date = '01/20/2017'

if (COALESCE(@fireDate, @hireDate, '06/06/2079') = ISNULL(@deathDate, '06/06/2079'))
begin
    select '+'
end;


if(@fireDate is null and @hireDate is null and @deathDate is null)
   or (@fireDate = @deathDate)
   or (@fireDate is null and @hireDate = @deathDate) begin
    select '+'
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...