Оператор SQL Case, который является наиболее эффективным / быстрым? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь написать оператор CASE в ПРОСМОТРЕ, и мне интересно, какой это лучший / предпочтительный способ сделать это.Я исследую значение поля и хочу присвоить ему другое значение, в зависимости от значения поля FIELD1, например:

CASE WHEN Field1 = 'X' THEN 1
WHEN Field1 = 'Y' THEN 0
WHEN Field1 = 'Z' THEN 2
ELSE 4
END

или

CASE Field1
WHEN 'X' THEN 1
WHEN 'Y' THEN 0
WHEN 'Z' THEN 2
ELSE 4
END

Любая помощь, котораяправильнее?

Это работает с большим количеством данных, я хочу, чтобы это было как можно быстрее.

1 Ответ

3 голосов
/ 19 сентября 2019

Оба выражения CASE должны генерировать один и тот же план / поведение выполнения.Тем не менее, оба не предлагают одинаковую гибкость в синтаксисе.Ваша вторая версия позволяет вам сравнивать равенство Field1 с другими литеральными значениями:

CASE Field1 WHEN 'X' THEN 1
            WHEN 'Y' THEN 0
            WHEN 'Z' THEN 2
            ELSE 4
END

Однако первый стиль более гибкий и позволяет использовать любое логическое сравнение, включающее Field1.Например, вы можете попробовать:

CASE WHEN Field1 BETWEEN 1 AND 10 THEN 0
     WHEN Field1 > 10 THEN 1
     ELSE 2 END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...