Замедленная таблица SQL Server 2008, секционирование таблиц
-
03-07-2019 - |
Вопрос
У меня есть таблица, которая выросла до 1 миллиона записей ... сегодня (все действительные)
Мне нужно ускорить это ... будет ли разделение таблицы ответом? Если да, могу ли я получить некоторую помощь по созданию запроса?
Таблица имеет 4 ключа значения bigint, и все это с индексированным первичным ключом и индексом desc для идентификатора пользователя, остальные значения макс. 139 (сейчас число пользователей превышает 10 000)
Любая помощь или направление будут оценены:)
Решение
Вам, вероятно, просто нужно настроить свои запросы и / или индексы. 1 миллион записей не должен вызывать у вас проблем. У меня есть таблица с несколькими сотнями миллионов записей & amp; способен поддерживать довольно высокую производительность Я обнаружил, что профилировщик SQL Server очень полезен в этом деле. Он доступен в SQL Server Management Studio (но, к сожалению, не в экспресс-версии). Вы также можете выполнить Query > Включите фактический план выполнения
, чтобы увидеть диаграмму времени, затрачиваемого на запрос.
Другие советы
Вы должны изучить ваши индексы и запросить рабочую нагрузку, прежде чем думать о разбиении. Если вы сделали большое количество вставок, ваш кластерный индекс может быть фрагментирован.
Даже если вы используете SQL Server Express, вы все равно можете создавать профили с помощью этого бесплатного инструмента: Profiler для Microsoft SQL Server 2005 / Экспресс-выпуск 2008 года
Я согласен с другими комментариями. При относительно небольшой базе данных (самая большая запись в таблице размером 1 мм) маловероятно, чтобы какая-либо активность в базе данных обеспечивала заметную нагрузку, если запросы оптимизированы, а остальная часть кода не использует базу данных с избыточными запросами. Это хорошая возможность почувствовать взаимодействие между запросами к базе данных и остальным кодом.
Посмотрите мои эксперименты по разбиению таблиц sql здесь [ http://faiz.kera.la/2009/08/02/does-partitioning-improve-performance-for-sql-tables/] . Надеюсь, что это полезно для вас ... И для вашего случая 1M не является значительным показателем. Возможно, вам нужно более точно настроить запросы, чем переходить к разбиению.