Часто мені потрібно запускати запити до великих таблиць, які не мають правильного індексу. Тому я прошу DBA створити такий індекс. Перше, що він робить - це переглянути статистику таблиці і побачити розмір простору індексу.
Часто він сказав би мені знайти альтернативне рішення, оскільки "індекс вже більший за таблицю". Він вважає, що індекс повинен бути меншим, ніж дані, тому що, він сказав мені, "ви коли-небудь бачили індекс у книзі? Це набагато менше, ніж сама книга, і саме так має бути індекс таблиці".
Я не вважаю, що його філософія є правильною, але я не можу оскаржити його, тому що він є провідним DBA і я розробник. Я відчуваю, що запиту потрібен індекс, індекс слід просто створити, а не знаходити "обхідні шляхи", які просто роблять нечитабельними та незрозумілими SP.
Я вибираю лише потрібні стовпці. Проблема в тому, що я фільтрую за датою, тому двигун обов’язково зробить сканування таблиці, щоб відповідати стовпцям. Запит проводиться раз на день, вночі, щоб зібрати статистику, але для запуску потрібно 15 хвилин (у нас є ще одне жорстке і швидке правило: жодна процедура не повинна тривати 3 хвилини).
DBA показав мені статистику індексу. На цій таблиці було близько 10 індексів, з яких було використано лише 6 (статистика показала нульове звернення до 4 з них). Це велика система з участю понад 20 розробників. Індекси були створені з будь-якої причини і, ймовірно, більше не використовуються.
Нам потрібно підтримувати SQL Server 2008, оскільки саме так працюють тестувальні БД. Але клієнтами все є у 2014 та 2016 роках.