Почему могут не удаляться/редактироваться индексы в базе?
Пожалуйста, подскажите:
Есть 2 таблицы, в одной 2 млн записей, в другой 10 млн, обе ужасно тормозят при джоинах.
Решил разобраться с индексами: зашел в MSSMS в управление индексами в таблицах, вижу, что помимо ожидаемого кластерного индекса на id есть еще 2 индекса, но их не отредактировать, не удалить и даже просто свойства не посмотреть - опции задизаблены. С чем это может быть связано?
Для эксперимента создал отдельную сводную таблицу, 12 полей, 2 млн записей, индексов пока не поставил. Выборка (без всяких джоинов) идет порядка 2 минут.
Пожалуйста, подскажите:
Это нормальное время выполнения для таких объемов или есть куда стремиться в оптимизации?
Если не нормальное, то какое время считается приемлемым?
Посмотрите стандартные отчёты по производительности (или запустите Profiler), найдите причину, посмотрите план её выполнения (включив IntelliSense), выполните рекомендации по уменьшению стоимости (если они появятся — синим цветом).
Спасибо за ответ. Для эксперимента создал отдельную сводную таблицу, 12 полей, 2 млн записей, индексов пока не поставил. Выборка (без всяких джоинов) идет порядка 2 минут.
Пожалуйста, подскажите:
Это нормальное время выполнения для таких объемов или есть куда стремиться в оптимизации?
Если не нормальное, то какое время считается приемлемым?
Если выборка идет из таблицы без условий: select * from my_table - ничего уже тут не сделать.
В этом случае будет зависить в первую очередь от дисковой подсистемы, играться надо с ней. Более скоростные диски ставить, ssd.
Если с условиями - то для этого индексы и создаются и правильная структура таблицы. К примеру, однозначно понятно, что выборка из таблицы с 12 int полями будет быстрей, чем из 12 строковых.