ключевые поля должны быть всегда
пункт где ???
Нет, это было бы излишним. Индексирование поля действительно работает только в том случае, если a) предложение WHERE достаточно избирательно (то есть: выбирается только около 1-2% значений; индекс для поля «Gender» может быть только одним из двух или трех возможных значений). бессмысленно), и б) ваше предложение WHERE не включает вызовы функций или другое волшебство.
В вашем случае TBL.Status может быть кандидатом - сколько возможных значений? Вы выбираете значения «1» и «2» - если есть сотни возможных значений, тогда это хороший выбор.
На примечании стороны:
этот пункт здесь: (TBL.Login IS NULL и TBL.Login <> 'dev') довольно бессмысленен - если значение TBL.login IS NULL, то оно ОПРЕДЕЛЕННО не 'dev' ..... так что просто " ЕСТЬ НУЛЬ "будет более чем достаточно ......
Другим полем, которое вы можете рассмотреть для включения индекса, является TBL.Date, так как вы, похоже, выбираете здесь диапазон дат - это может быть хорошим выбором.
Кроме того, обратите внимание: по возможности НЕ используйте кнопку SELECT * FROM ...... для выбора полей. Это вызывает много накладных расходов для SQL Server. Укажите ваши столбцы - и выберите ТОЛЬКО те, которые вам действительно нужны - не только все из них, черт возьми ...