Tengo un simple consulta de selección:
SELECT *
FROM `inventory`
WHERE account_id = "1"
AND marketplace_id = "2"
AND sku = "3"
AND `date` = "4"
Tiene una condición en cuatro campos, por lo tanto, el índice natural es uno de estos cuatro campos.
y cuando explico la consulta, me sale: Decir que está utilizando el segundo índice de la lista, en lugar de la 3ª o 4ª.
Si utilizo USE INDEX(account_id__marketplace_id__sku__date)
en mi consulta, se utiliza con éxito, y filtra el 100%.
He tratado ANALYZE TABLE
y OPTIMIZE TABLE
reconstruir los índices, pero la situación sigue siendo el mismo!
A partir de mi experiencia con otras tablas, si ahora cae índices 2 y 3, y volver a crearlos, de tal manera que el índice más grande es el primero en el orden, la consulta seleccionará ese índice, es decir, se selecciona la primera que partidos más bien una máximos partido.
- Versión del servidor MySQL : 7.5.25-google-log
- versión del cliente MySQL phpMyAdmin : 05/05/59
MySQL elegir índice por el tamaño de los datos de la tabla;
Usted puede tratar de insertar 600000 registros en el inventario, mantener el valor del registro aleatorio, y ejecutar "explicar"