약 150,000 행의 데이터가있는 매우 큰 MySQL 테이블이 있습니다. 현재 시도하고 실행할 때
SELECT * FROM table WHERE id = '1';
ID 필드가 기본 인덱스이므로 코드가 제대로 실행됩니다. 그러나 프로젝트의 최근 개발을 위해서는 다른 필드로 데이터베이스를 검색해야합니다. 예를 들면 다음과 같습니다.
SELECT * FROM table WHERE product_id = '1';
이 필드는 이전에 색인화되지 않았습니다. 그러나 하나를 추가 했으므로 mysql은 이제 필드를 색인화하지만 위 쿼리를 실행하려고하면 매우 느리게 실행됩니다. EXPLAIN 쿼리는 product_id 필드에 이미 인덱스를 추가했을 때 인덱스가 없다는 것을 나타내므로 쿼리는 단일 행을 반환하는 데 20 분에서 30 분이 걸립니다.
내 전체 EXPLAIN 결과는 다음과 같습니다.
| id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
| 1 | SIMPLE | table | ALL | NULL | NULL | NULL | NULL |157211 | Using where |
+----+-------------+-------+------+--------------+------+---------+------+-------+------------------+
방금 살펴본 결과 ID 필드는 INT로 저장되고 PRODUCT_ID 필드는 VARCHAR로 저장됩니다. 이것이 문제의 원인 일 수 있습니까?
EXPLAIN
결과 를 게시 할 수 있습니까 ? 인덱스 가 없다는 것이 확실 합니까? 아니면 인덱스가 있습니까?하지만 MySQL이 사용하지 않기로 선택 했습니까?