Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Оптимизация запроса не несколькими JOIN LEFT (SpaceIQ) 05/10/2010 - 23:20:23
      Re: Оптимизация запроса не несколькими JOIN LEFT (SpaceIQ) 06/10/2010 - 00:21:56
      Re: Оптимизация запроса не несколькими JOIN LEFT (Diter) 06/10/2010 - 01:40:38



From: SpaceIQ - 05/10/2010 - 23:20:23
Subject:Оптимизация запроса не несколькими JOIN LEFT
-----------------
Добрый вечер, господа!

Помогите, пожалуйста, с оптимизацией запроса.

Мне кажется это довольно простой запрос, но выполняется подозрительно долго (около 4-5 секунд).

В таблице tableA порядка 100 000 записей.
В таблице tableB поярдка 250 000 записей (tableA -> tableB - один ко многим).
В таблице tableС порядка 50 записей (tableB -> tableC - один ко дному, словарь).
В таблице tableD порядка 2 000 000 записей (tableB -> tableD, один ко многим).

Тип таблиц InnoDB


SELECT
*
FROM
(
SELECT * FROM tableA LIMIT 100
) AS a
LEFT JOIN tableB AS b ON b.a_id = a.a_id
LEFT JOIN tableC AS c ON c.c_id = b.c_id
LEFT JOIN tableD AS d ON d.b_id = b.b_id



Информация EXPLAIN SELECT такая:

id: 1
select_type: PRIMARY
table: <derived2>
type: ALL
possible_key: (null)
key: (null)
key_len: (null)
ref: (null)
rows: 100
extra: пусто

id: 1
select_type: PRIMARY
table: tableB
type: ref
possible_key: FK_tableB_tableA_a_id
key: FK_tableB_tableA_a_id
key_len: 5
ref: a.a_id
rows: 1
extra: пусто

id: 1
select_type: PRIMARY
table: tableC
type: eq_ref
possible_key: PRIMARY, UK_tableC_c_id
key: PRIMARY
key_len: 1
ref: b.c_id
rows: 1
extra: пусто

id: 1
select_type: PRIMARY
table: tableD
type: ref
possible_key: FK_tableD_tableB_b_id
key: FK_tableD_tableB_b_id
key_len: 9
ref: b.b_id
rows: 3
extra: using index

id: 2
select_type: PRIMARY
table: tableA
type: ALL
possible_key: (null)
key: (null)
key_len: (null)
ref: (null)
rows: 119543
extra: пусто

Меня смущает последняя запись с id = 2 и rows = 119543. Это так и должно быть?

А задача такая:
Для 100 первых записей (tableA) загрузить информацию из всех остальных таблиц.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
37552



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |