Hola, estoy testeando una consulta en mysql y veo que se demora mas de lo que debería. La consulta es la siguiente:
Código SQL:
Ver originalEXPLAIN SELECT HIGH_PRIORITY main.id, main.activado, ... FROM articulo main, articulo_detalle artd WHERE main.id=artd.id_articulo AND main.id_empresa='5523' AND main.referencia='06b63fa08a306564e8ea56574...' LIMIT 1
La cosa está así, la tabla contiene aproximadamente un millor y medio de referencias, para agilizar la consulta he creado un indice en el campo id_empresa y otro en el campo referencia pero solo con 8 digitos para no indexar todo el campo ya que es un varchar(60).
Lo que no llego a entender bien es que al ejecutarla con explain me devuelve rows: 197491. Es decir, ha tenido que escanear 197491 lineas para encontrarla. Sin embargo, si ejecuto la siguiente sentencia:
Es decir, hago la consulta con los primeros 8 digitos de la referencia, para ver cuantas coincidencias pueden haber con estos y me devuelve solamente 1 línea, con lo cual no llego a entender porque en la consulta anterior ha tenido que escanear tantas lineas si realmente el indice habría tenido que dar coincidencia con esa misma.