Zasadniczo jesteśmy bardzo zadowoleni z wydajności MySQL, podobne zapytania są realizowane w ułamku sekundy. Teraz mamy problem z tym zapytaniem. Brakujący indeks jest prawdopodobnie najczęstszą przyczyną takich problemów. Tak więc poprzedzałem zapytanie przez EXPLAIN i otrzymałem ten plan zapytania, który pokazuje, że używane są tylko indeksy bez sekwencyjnych skanów.Co może zmniejszyć wydajność MySqls?
Tabele dmr i dma mają po 3 miliony wierszy, dc ma 6000 wierszy.
+----+-------------+-------+--------+-------------------------------+----------------+---------+--------------------+------+-------------+
| 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 |
+----+-------------+-------+--------+-------------------------------+----------------+---------+--------------------+------+-------------+
Co może powodować te problemy?
Wersja MySql ma 5.5, używając InnoDB jako silnika. (Tylko domyślne parametry w oknach).
EDIT
Kiedy usunąć gdzie klauzula, mysql zwraca (ogromne) zestaw wyników natychmiast. planu kwerend w tym przypadku wygląda następująco:
+----+-------------+-------+-------+----------------------------+--------------------+---------+------------+------+--------------------------+
| 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 |
+----+-------------+-------+-------+----------------------------+--------------------+---------+------------+------+--------------------------+
You najprawdopodobniej I/O związany przez dysk twardy. Zwiększ zmienną rozmiar 'innodb_buffer_pool' do 70% twojej pamięci RAM. W ten sposób część działającego zbioru danych będzie przechowywana w pamięci i wyszukiwanie będzie znacznie szybsze. –
spróbuj przeanalizować tabelę ... http: //dev.mysql.com/doc/refman/5.0/en/analyze-table.html –
@Neville - już zrobiłem, mówi, że status jest w porządku. – stacker