sql - переменная datetime против строкового представления переменной datetime - PullRequest
4 голосов
/ 06 мая 2010

У меня есть запрос, который слишком долго отвечает, когда параметр поиска оказывается типом данных varchar с датой. Однако, если я конвертирую varchar в переменную datetime, запрос выполняется нормально. Например:

Это занимает слишком много времени.

select count(id)
  from names
 where updateddate > '1/5/2010'

Это нормально работает.

declare @dateparam datetime
    set @dateparam = convert(datetime, '1/5/2010',102)

select count(id)
  from names
 where updateddate > @dateparam

По какой причине один работает нормально, а другой нет?

1 Ответ

5 голосов
/ 06 мая 2010

Потому что в случае с varchar его нужно конвертировать в дату. Это требует времени и может помешать эффективному использованию индексов.

Почти всегда лучше использовать правильный тип.

...