SQL Server работает крайне медленно при выполнении запросов к дампу данных переполнения стека - PullRequest
1 голос
/ 30 августа 2009

Я импортировал дамп данных переполнения стека в SQL Server 2008. Для некоторых запросов, особенно для таблицы «Посты», требуется больше минуты.

Пример запроса:

SELECT   
  Id, PostTypeId, AcceptedAnswerId, CreationDate, 
  Score, ViewCount, Body, OwnerUserId, OwnerDisplayName,
  LastEditorUserId, LastEditDate, LastActivityDate, Title,
  Tags, AnswerCount, CommentCount, FavoriteCount, ClosedDate, ParentId
FROM dbo.Posts

Запрос возвращает 881665 строк и занимает чуть менее 2 минут. У меня есть индекс, настроенный для этой и других таблиц. Есть ли что-нибудь, что я могу сделать, чтобы ускорить эту вещь?

Ответы [ 2 ]

3 голосов
/ 30 августа 2009

Поскольку у вас нет предложения WHERE, вы выполняете сканирование таблицы, которая читает всю таблицу. Это всегда будет относительно медленно; индекс вообще не поможет.

Чтобы ускорить запрос, выберите меньше :) Попробуйте ввести предложение WHERE, чтобы вас интересовали только определенные теги или вопросы в течение определенного периода времени. Затем вы можете поместить индекс в эти столбцы, чтобы ускорить запрос.

1 голос
/ 30 августа 2009

Если вы делаете копии, взгляните на SqlBulkCopy API. У меня был переход от 10 минут до 4 секунд с использованием этого API.

Но Джереми совершенно прав. Что вы ожидаете, выполнив запрос более 800000+ результатов, которые содержат строки (столбец тела). Если вам не нужно тело, то вы могли бы значительно ускорить результат.

Какое оборудование (особенно HDD) вы используете для SQL Server. Если вы поместите такую ​​БД на ваш C: \, то вы не получите желаемого результата.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...