Научите разбираться в плане выполнения запроса в QA

AlexanderVS
Дата: 14.03.2001 05:33:07
Запускаю в QA запрос, смотрю план его выполнения и не пойму где критичные места, по каким цифрам их определять?
Genady
Дата: 14.03.2001 10:41:20
Думаю, что если нужны цифры, тогда лучше использовать Profiler, а в плане запроса можно посмотреть какие операции использует сервер для выполнения запроса и сколько весит каждая такая операция в запросе. Можно посмотреть, например используется ли индекс при выполнении запроса.
AlexanderVS
Дата: 14.03.2001 14:04:28
Там есть такое понятие: Cost, это временные затраты на конкретную операцию от общего времени выполнения запроса? Или еще что?
Genady
Дата: 14.03.2001 14:38:17
Механизма расчета стоимости операции в запросе я не знаю, да и так ли уж это важно, тем более что она измеряется процентами.
Дед Маздай
Дата: 14.03.2001 15:11:23
Оптимайзер SQL Server'а, как и б-во совр. серверов БД, явл-ся cost-based. Т.е. из безбрежного числа процедурных вариантов вып-я изначально теоретико-множ. операции SQL он старается найти тот, к-й доставляет минимум cost'a. Сл., когда г-т об опт. планах, подразумевается, что именно стоимость выступает критерием оптимальности. М. рассм. cost как время, за к-е SQL Server рассчитывает управиться с вашим запросом, на некоей эталонной (сов. абстрактной) конфигурации. Отсюда, 1) абс. величина costa абс. никого никогда по б.счету не волнует. Имеет смысл т.ее отн.выр-е. Тот запрос, у кого она меньше, будет SQL Srv наиболее симпатичен. Поэт., напр., показывается процентная величина стоимости операторов и запросов в батче - так проще опр-ть наиболее критичные куски. 2) по своей природе это прогноз. Причем с заведомо ограниченной точностью. Чтобы повысить точность, придется перебирать все мыслимые и немыслимые ситуации, а это займет длит.время и сразу зашкалит тот самый критерий, к-й мы собирамся минимизировать. Т.е. одна задача на оптимизацию тут же порождает другую - задачу на оптимальное огрубление алгоритма. Вообще, вещь безумно интересная. Да, так вот несмотря на то, что оптимизатор MS SQL Server на классических реляционных задачах сегодня является лучшим в мире, иногда он тоже может ошибаться в своих оценках, особенно если жизнь меняется слишком резко.