В целом мы очень довольны производительностью Mysqls, аналогичные запросы выполняются за доли секунды.Теперь мы столкнулись с проблемой этого запроса
SELECT dc.id,dmr.art_id
FROM dmr
JOIN dma ON dma.id = dmr.dml_id
JOIN dc ON dc.id = dma.dc_id
WHERE dmr.art_id = 2285
Для получения 5021 строки требуется 50 секунд.Отсутствие индекса, вероятно, является наиболее распространенной причиной подобных проблем.Поэтому я предшествовал запросу EXPLAIN и получил этот план запроса, который показывает, что используются только индексы, а не последовательное сканирование.
В таблицах dmr и dma по 3 миллиона строк каждая, в dc 6000 строк.
+----+-------------+-------+--------+-------------------------------+----------------+---------+--------------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+--------+-------------------------------+----------------+---------+--------------------+------+-------------+
| 1 | SIMPLE | dmr | ref | FKC33D5199F17E1825,ix_art_ref | ix_art_ref | 5 | const | 5021 | Using where |
| 1 | SIMPLE | dma | eq_ref | PRIMARY,FK8C6E1445153BBDC9 | PRIMARY | 8 | dev.dmr.dml_id | 1 | |
| 1 | SIMPLE | dc | eq_ref | PRIMARY | PRIMARY | 8 | dev.dma.dc_id | 1 | Using index |
+----+-------------+-------+--------+-------------------------------+----------------+---------+--------------------+------+-------------+
Что может вызвать эти проблемы?
Версия MySql 5.5 с использованием InnoDB в качестве движка.(Только параметры по умолчанию для окон).
EDIT
Когда я удаляю предложение where, mysql немедленно возвращает (огромный) набор результатов.План запроса в этом случае выглядит так:
+----+-------------+-------+-------+----------------------------+--------------------+---------+------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+----------------------------+--------------------+---------+------------+------+--------------------------+
| 1 | SIMPLE | dc | index | PRIMARY | FKAEB144C64FA71464 | 9 | NULL | 4037 | Using index |
| 1 | SIMPLE | dma | ref | PRIMARY,FK8C6E1445153BBDC9 | FK8C6E1445153BBDC9 | 9 | dev.dc.id | 263 | Using where; Using index |
| 1 | SIMPLE | dmr | ref | FKC33D5199F17E1825 | FKC33D5199F17E1825 | 9 | dev.dma.id | 1 | Using where |
+----+-------------+-------+-------+----------------------------+--------------------+---------+------------+------+--------------------------+