Hola resulta que tengo una tabla con 16M de registros la tabla esta indezada por el campo c_id
la distribucion de datos esta en 4 c_id que son (1,2,3,4)
si realizo una consulta de este tipo
Código SQL:
Ver originalSELECT item1 FROM myTabla WHERE c_id = 4;
El resultado que obtengo es este
500000 rows in set (1.00 sec)
Le hago un
EXPLAIN a la consulta para ver como mysql esta operando
Código SQL:
Ver originalmysql> EXPLAIN SELECT item1 FROM myTabla WHERE cp_id = 4;
+----+-------------+----------+------+---------------+-------+---------+-------+---------+-------+
| id | select_type | TABLE | TYPE | possible_keys | KEY | key_len | REF | ROWS | Extra |
+----+-------------+----------+------+---------------+-------+---------+-------+---------+-------+
| 1 | SIMPLE | myTabla | REF | INDEX | INDEX | 2 | const | 1061072 | |
+----+-------------+----------+------+---------------+-------+---------+-------+---------+-------+
Aquí veo que el msyql recorre
1061072 para poder recuperrar los
500.000
Mi pregunta es, esto es normal por la cantidad de registro que tiene la tabla si es normal entonces quesería lo mas ideal dividir la tabla o sea segregar los 500.000 registros de c_id = 4 y colocarlo en otra tabla aparte o ustedes entienden que tengo algun problema en como estoy optimizando mi consulta.
Se aceptan cualquier criticas, cualquier experiencia que hayan tenido cualquier cosas por favor no se cohiban en responder.
Saludos.