Я узнал сегодня, если вы добавите к своему запросу
OPTION (MAXDOP 0)
ваш запрос будет выполняться на нескольких процессорах, и если это большой запрос, запрос будет выполняться быстрее.
Я знаю общие рекомендации по оптимизации запросов (использование индексов, выбор только необходимых полей и т. Д.), Мой вопрос касается оптимизации SQL Server. Возможно изменение каких-то опций в конфигурациях или что-то еще.
Какие существуют рекомендации по оптимизации SQL Server?
Спасибо.
P.S. Я полагаю, это не то место, чтобы задавать вопросы, связанные с сервером. Стоит ли мне его удалить или, может быть, его можно будет перенести на serverfault?
Я узнал сегодня, если
Совет: ПРОЧИТАЙТЕ РУКОВОДСТВО хотя бы один раз. Вся эта «опция» хорошо задокументирована, и вы можете быть удивлены, сколько еще вы можете узнать.
ваш запрос будет выполняться на нескольких процессорах, и если это огромный запрос, запрос будет выполняться быстрее
Нет, это не то, что делает MAXDOP. В НОРМАЛЬНЫХ обстоятельствах это абсолютно НИЧЕГО не делает. Получите - вы фигню выучили;)
Вот так:
Параметр MaxDOP определяет МАКСИМАЛЬНУЮ степень параллелизма. Он не говорит «используйте больше процессоров», он говорит «используйте максимальный параллелизм X», и если X = 0, то это количество процессоров.
Однако здесь есть загвоздка - для MaxDOP существует общесистемная настройка, которая уже говорит 0, поэтому при нормальных обстоятельствах он ничего не делает так, как вы этого хотите.
Что это полезно для того, так это ограничить максимальное значение Пералелизма ДАЛЕЕ для запросов, где это не имеет смысла (потому что нет, он не ускоряет выполнение запроса автоматически - на самом деле он может сделать его намного медленнее). В этих случаях для определенных пользователей может быть необходимо, чтобы параметр (maxdop 1) был ограничен, а не по умолчанию. Вы можете прочитать об этом на http://msdn.microsoft.com/en-us/library/ms181007.aspx
При этом MaxDOP сложно освоить - в 99% случаев нет смысла помещать maxdop в запрос.
Какие существуют рекомендации по оптимизации SQL Server?
Таких нет. Применяются стандартные принципы SQL (запрашивайте только то, что вам нужно, имейте соответствующие индексы и т. Д.). Остальные варианты используются редко - поэтому общие принципы не применяются (поскольку они редки - общее руководство: не используйте их).
Рекомендации, кстати, называются документацией.
Как всегда (ваш пост - очень хороший пример), очень часто ограниченные знания сводятся к одному: совершенно неверно (поскольку вы даже не знали, что на самом деле делает MaxDop 0).