SQL где оценка условия предложения


У меня есть простой вопрос, однако я не смог найти ответ на него. В SQL где предложение, которое лучше?

TO_CHAR (DAT, 'YYYYMMDD') BETWEEN '20080101' AND '20131231'

Или

DAT BETWEEN TO_DATE('20080101','YYYYMMDD') AND TO_DATE('20131231','YYYYMMDD')

Оцениваются ли значения условий только один раз, а затем проверяются для каждой строки в таблице, или механизм SQL пересчитывает их каждый раз?

Спасибо!

1 2

1 ответ:

Любой аргумент, который включает константы и литералы, будет вычислен только один раз. Второй, однако, намного лучше - он позволяет индексировать столбец dat и затем использовать этот индекс для повышения производительности, в то время как второй не позволит использовать индекс.