J'ai une très grande table MySQL avec environ 150 000 lignes de données. Actuellement, lorsque j'essaie de l'exécuter
SELECT * FROM table WHERE id = '1';
le code fonctionne très bien tant que le champ ID est l'index primaire. Cependant, récemment, pour un développement dans le projet, je recherche la base de données par un autre champ. Par exemple
SELECT * FROM table WHERE product_id = '1';
Ce champ n'a pas été préalablement indexés, cependant, je l'ai ajouté comme un indice, mais lorsque j'essaie d'exécuter la requête ci-dessus, le résultat est très lent. Un EXPLIQUER requête révèle qu'il n'existe pas d'indice pour le product_id champ lorsque je l'ai déjà ajouté un et comme un résultat de la requête prend n'importe où de 20 à 30 minutes pour retourner une seule ligne.
EDIT:
Mon plein EXPLIQUER les résultats sont les suivants:
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+----------------------+------+---------+------+------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL | 157211 | Using where |
+----+-------------+-------+------+----------------------+------+---------+------+------+------------------+
EDIT2:
Il pourrait être utile de noter que je viens de prendre un coup d'oeil et le champ ID est stocké en tant que INT alors que le PRODUCT_ID champ est stocké comme VARCHAR. Cela pourrait-il être la source du problème?