У мене є запит, який використовує функцію присудка, приблизно так:
commentType = 'EL'
AND commentDateTime >= DATEADD(month,datediff(month,0,getdate()) - 13,0)
У мене відфільтрований індекс в commentType, який має 40K рядків, і коли я запускаю запит, орієнтовна кількість рядків для пошуку шукає дуже точно (близько 11 К), але для наступного кроку (оператор сортування) він повністю ігнорує статистику та просто оцінює загальну кількість рядків у відфільтрованому індексі.
Чому це відбувається? Я знаю основи здібності , і я протестував лише заради розумності, замінивши дату на фактичну дату (01.01.2014) та вуаля ... Сорт почав правильно вгадувати кількість рядків ...
Чому це відбувається і як я можу це виправити? Я не можу пройти фіксовану дату ...
DATEADD(month, -13, DATEADD(day, 1-DATEPART(day, SYSDATETIME()))
переконатися, чи є різниця?
(commentType, commentDate)
, він поводиться краще? Просто відфільтровані індекси іноді можуть подавати неправильні оцінки в різних точках планів. Оцінка виглядає як вихід, повідомляючи загальну кількість у відфільтрованому індексі, але насправді план відображається неправильно.
DATEADD(month,datediff(month,0,getdate()) - 13,0)
не має для мене сенсу. Що ви намагаєтеся зробити з цим? Чи можна це вдосконалити / спростити?