2009-05-03 4 views
0

У меня есть таблица, которая выросла до более чем 1 миллиона записей ... сегодня (корректный)SQL Server 2008 Slow Таблицы, Таблица Разметка

Мне нужно ускорить его ... будет таблица Разметка быть ответом ? Если это так, я могу получить помощь в построении запроса?

Таблица имеет 4 клавиши значение BIGINT и то все с первичным ключом проиндексированы и индекс по алфавиту по идентификатору пользователя другие значения находятся на макс 139 (есть только более чем 10000 пользователей теперь)

Любая помощь или направление будет Оцените :)

+0

Не могли бы вы показать нам структуру таблицы, некоторые примерные запросы, которые являются медленными, и все существующие индексы? – sisve

+0

Мы не можем ответить: недостаточно информации. Основываясь на вашем комментарии ниже: неправильная версия SQL Server, не использующая собственный SQL, никаких опубликованных схем или индексов. – gbn

ответ

1

Вам, вероятно, просто нужно настроить свои запросы и/или индексы. 1 миллион записей не должно вызывать проблем. У меня есть таблица с несколькими сотнями записей &, способная поддерживать довольно высокую производительность. Я нашел, что профилировщик SQL Server очень полезен этому материалу. Он доступен в SQL Server Management Studio (но не экспресс-версия, к сожалению). Вы также можете сделать Query > Include Actual Execution Plan, чтобы увидеть график времени, затрачиваемого во время запроса.

+0

У меня только экспресс :(, однако, сервер - это кластер корпоративного предприятия. Сайт MVC и LINQ to SQL. LINQPad показывает, что вывод является достаточно простым достаточно простыми запросами, поскольку в целом есть просто замедление на сайте. даже на страницах, которые просто загружают artilce (таблица статей имеет ... 30 элементов? heh) –

+0

Трудно помочь без дополнительной информации о таблице и о том, какие запросы вы используете. Я обнаружил, что с LINQ to SQL это легко пропустить .ToList(), и ваш запрос заканчивается и заканчивается, когда вы думаете, что просто повторяете элементы в своем наборе результатов. Перейдите ко всему вашему коду и убедитесь, что вы выполняете запросы за пределами циклов , и помните, что ваши результаты ленивы загружены - запросы выполняются при первом доступе к набору результатов. Один маленький .ToList() иногда имеет большое значение. – Bryan

2

Прежде чем думать о разделении, вы должны исследовать свои индексы и запросить рабочую нагрузку. Если вы сделали большое количество вставок, ваш кластеризованный индекс может быть фрагментирован.

Даже если вы используете SQL Server Express вы можете профиль, используя этот бесплатный инструмент: Profiler for Microsoft SQL Server 2005/2008 Express Edition

0

Я согласен с другими комментариями. При достаточно малой базе данных (самые большие записи в таблице 1MM) маловероятно, что любая активность в базе данных должна обеспечивать заметную нагрузку, если запросы оптимизированы, а остальная часть кода не злоупотребляет базой данных избыточными запросами. Это хорошая возможность получить представление о взаимодействии между запросами базы данных и остальной частью кода.

Смежные вопросы