улучшить запрос SELECT SQL - PullRequest
0 голосов
/ 04 июля 2011

Моя схема данных очень проста, скажем, о фермах

  • ТаблицаA является основной, с важным полем "is_active", предполагающим, что ферме доверяют (вроде)
  • tableB - это хранилище данных сериализованных массивов статистики фермы

Я хочу получить все данные об активной ферме, поэтому я просто делаю что-то вроде этого:

SELECT * FROM tableA LEFT JOIN tableB ON id_tableA=id_tableB WHERE is_active=1 ORDER BY id_tableA DESC;

RightТеперь запрос занимает 15 секунд, чтобы выполнить прямо из оболочки SQL, например, я хочу получить все данные из таблицы B, например:

 SELECT * FROM tableB ORDER BY id_tableB DESC;

, это занимает менее 1 секунды (около 1200 строк)...

Есть идеи, как улучшить исходный запрос?

thx

Ответы [ 2 ]

3 голосов
/ 04 июля 2011

Создание индексов для ключей, соединяющих две таблицы.

проверьте эту ссылку, как создать индексы в MySQL: http://dev.mysql.com/doc/refman/5.0/en/create-index.html

2 голосов
/ 04 июля 2011

Вам нужно будет создать индекс.

Вы можете создать следующий индекс:

mysql> создать индекс ix_a_active_id для tableA (id_tableA, is_active);

mysql> создать индекс ix_b_id для tableB (id_tableB);

Сначала создается индекс на ОБА, идентификатор + является активной переменной.Второй создает индекс по идентификатору для таблицы B.

...