Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Aliced Member Откуда: Сообщений: 301 |
Для одной и той же таблицы с одними и теми же данными для одного и того же запроса получаю несколько видов планов запроса с разным временем выполнения. Не могу понять, какой лучше и как добиться именно нужного (планы в приложенном рисунке): 1. index seek, key lookup и затем clustered index delete - непонятно когда же обновляются другие индексы. 2. index seek, затем clustered index delete, а затем sequence по остальным индексам и выполнение index delete с использованием table spool CREATE TABLE для таблицы:
Индексы:
Перед каждым тестом делаю зачистку
|
|||
5 мар 16, 01:49 [18899469] Ответить | Цитировать Сообщить модератору |
Aliced Member Откуда: Сообщений: 301 |
планы К сообщению приложен файл. Размер - 131Kb |
5 мар 16, 01:50 [18899470] Ответить | Цитировать Сообщить модератору |
SomewhereSomehow Member Откуда: Moscow Сообщений: 2480 Блог |
Aliced, В зависимости от числа удаляемых строк, план для удаления может быть либо: - Per-Index Plan (Wide plan) - по-индексно - Per-Row Plan (Narrow plan) - по-строчно Форма плана зависит от стоимости (предполагаемого числа строк, числа индексов и т.д.). Эффективность плана зависит от того, насколько оценки близки к реальности. Кроме того, на забывайте, что при операциях модификации (как и везде, но тут особенно) производительность зависит не только от плана. Более подробно нет времени объяснять, читайте по ссылкам: Optimizing T-SQL queries that change data SQL Server Performance Tuning : Per-Row and Per-Index Plans |
5 мар 16, 03:15 [18899501] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |