powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор
7 сообщений из 7, страница 1 из 1
Оптимизатор
    #32063499
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Разбираюсь с оптимизация запросов и сразу же возникло несколько вопросов.

Как я понял, оптимизатор запросов может оптимизировать только SQL запросы (insert, update, select), а выражения присущие только T-SQL(if, for) не может.
Это так, или я ошибаюсь ?

А если у меня запрос вида:

for .....
insert ... select
.....

Оптимизатор оптимизирует выражение внутри for' а ?


Спасибо.
...
Рейтинг: 0 / 0
Оптимизатор
    #32063520
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оптимизатор вначале выполняет декомпозицию запросов. ОСтаниется ли после этого Ваш for - это ещё не факт.
...
Рейтинг: 0 / 0
Оптимизатор
    #32063645
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В описании оптимизатора встречается такая фраза:

Cheapest cost is greater than parallelism threshold ?

Что это за порог (parallelism threshold) ?


Спасибо.
...
Рейтинг: 0 / 0
Оптимизатор
    #32063701
aag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполнять декомпозицию запроса через for - это, по-моему, чересчур - для такой оптимизации надо уже понимать логику запроса.
Порог - если при составлении плана оптимизатор находит estimated cost больше некоторого значения, используются параллель. планы запросов. См. cost threshold for parallelism Option в BOL
...
Рейтинг: 0 / 0
Оптимизатор
    #32063756
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Thanks.

Еще один вопрос, все по той же теме. Что такое Bookmark Lookup на Excution Plan ?

И почему при выполнении одного и того же запроса на одной машине он присутствуе, а на другой нет ?

Как можно снизить его стоимость ?
...
Рейтинг: 0 / 0
Оптимизатор
    #32063813
Фотография Гнездин Петр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А запросы выполняются на одном и том же сервере с теми же параметрами? Не верю.
Bookmark lookup происходит, например, когда отбираются записи из некой таблицы по индексу с проверкой каких-нибудь условий, а потом нужно извлечь другие поля из этой таблицы, которых нет в индексе или проверить какие-то другие условия. Тогда при первом отборе "выдергиваются" id записей (создаются букмарки), а потом по ним идет обращение непосредственно к записям в этой таблице. Избавиться можно созданием составного индекса по всем полям, по которым идет выборка из таблицы. Но плодить много индексов на таблицу, данные в которой часто изменяются, не следует...
...
Рейтинг: 0 / 0
Оптимизатор
    #32063911
Осирис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.

Да, вы правы. Хотя запрос один и тот же, и выполняется он над одним и тем же набором данных, но серверы разные.

Вычитал еще одну интересную мыслю. Как я понял, если в моем запросе используются переменные, то статистика по индексам не используется.

То есть даже если я делаю так:

declare @t varchar(10)
set @t = 'aaa'
select * from table where field = @t


То оптимизатор не сможет использовать статистику по индексам. Это так ?

Если это так, то насколько это увеличит стоимость запроса (одно дело если это десятые доли процента, другое дело десятки процентов) ?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизатор
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]