Ich habe eine sehr große MySQL-Tabelle mit etwa 150.000 Datenzeilen. Wenn ich derzeit versuche, eine
SELECT * FROM table WHERE id = '1';
läuft der Code problemlos, da das Feld ID der Primärindex ist. Für eine neue Entwicklung im Projekt muss ich die Datenbank jedoch nach einem anderen Feld durchsuchen. Zum Beispiel:
SELECT * FROM table WHERE product_id = '1';
Dieses Feld war vorher nicht indiziert; ich habe jedoch einen hinzugefügt, so dass mysql das Feld jetzt indiziert, aber wenn ich versuche, die obige Abfrage auszuführen, läuft sie sehr langsam. Eine EXPLAIN-Abfrage zeigt, dass es keinen Index für das Feld "product_id" gibt, obwohl ich bereits einen hinzugefügt habe. Infolgedessen benötigt die Abfrage zwischen 20 und 30 Minuten, um eine einzige Zeile zurückzugeben.
Meine vollständigen EXPLAIN-Ergebnisse sind:
| id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL |157211 | Using where |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
Es könnte hilfreich sein, darauf hinzuweisen, dass ich gerade einen Blick darauf geworfen habe und das Feld ID als INT gespeichert wird, während das Feld PRODUCT_ID als VARCHAR gespeichert wird. Könnte dies die Ursache für das Problem sein?