Тайм-аут SQL - БД не проиндексирована - PullRequest
2 голосов
/ 21 июня 2011

В настоящее время у меня проблемы с производительностью при внутреннем соединении SQL для двух таблиц с 10 000 000 строк (около 10-15 минут ответа)

БД не проиндексирована.

Является ли индексирование единственным доступным для меня решением?

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Если вы запрашиваете поле, которое не проиндексировано, то будет выполнено сканирование таблицы по всей таблице (10 миллионов строк).

Если вы делаете like = '%blah%', это тоже будет медленно.

Это может помочь, если вы действительно отправили свой запрос (или аналогичный), чтобы мы могли предоставить вам больше информации.

0 голосов
/ 21 июня 2011

Это доступные вам варианты

  1. Измените ваш запрос, чтобы не иметь присоединения. Это легко, если вы хотите, чтобы данные были только одна таблица.
  2. Добавить индекс в правильную таблицу.
  3. Измените вашу схему, чтобы не требовать объединения. Это может потребовать перемещения данных, иерархических данных, материализованного представления или какого-либо другого процесса нормализации.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...