Я знаю, що ВСТУП в таблиці SQL може бути повільним з будь-якої кількості причин:
- Наявність INSERT TRIGGER на столі
- Багато примусових обмежень, які потрібно перевірити (як правило, іноземні ключі)
- Сторінка розділяється в кластерному індексі, коли рядок вставляється в середині таблиці
- Оновлення всіх пов'язаних некластеризованих індексів
- Блокування від іншої активності на столі
- Поганий час відповіді на запис IO
- ... що я пропустив?
Як я можу визначити, хто відповідає за конкретний випадок? Як я можу виміряти вплив розбиття сторінки проти некластеризованих оновлень індексу проти всього іншого?
У мене є збережена програма, яка вставляє приблизно 10 000 рядків одночасно (з таблиці темп), що займає приблизно 90 секунд на 10 к рядків. Це неприпустимо повільно, оскільки це призводить до того, що інші павуки вичерпаються.
Я переглянув план виконання, і бачу завдання INSERT CLUSTERED INDEX та всі INDEX ПОТРІБНІ з пошукових запитів FK, але він все ще не каже мені точно, чому це займає так багато часу. Ніяких тригерів немає, але в таблиці є кілька FKeys (які здаються правильно індексованими).
Це база даних SQL 2000.