EXPLAIN键入“all”。没有理由不在内连接上使用索引

时间:2018-05-30 09:29:58

标签: mysql

我正在运行一个类似下面的查询(其中'70'是一个示例,因为我在我的PHP代码中使用相同的查询只更改每个“clasificacion”的值)并且我想优化它,所以我使用了EXPLAIN:

EXPLAIN SELECT TE.PK_ID_TAREA_EMPRESA AS ID_EMPRESA, TE.NOMBRE AS NOMBRE_EMPRESA, TCA.PK_ID_TAREA_CATEGORIA AS ID_CATEGORIA, TCA.NOMBRE AS NOMBRE_CATEGORIA, T.TIPO AS TIPO, T.CLIENTE AS CLIENTE, T.PETICION AS PETICION, T.FACTURABLE AS FACTURABLE, TCOM.COMENTARIO AS COMENTARIO, TCOM.PENDIENTE AS PENDIENTE FROM TAREA_COMENTARIO TCOM
    INNER JOIN TAREA T
    ON TCOM.TAREA_TIPO = T.TIPO
    AND TCOM.TAREA_CLIENTE = T.CLIENTE
    AND TCOM.TAREA_PETICION = T.PETICION
    INNER JOIN TAREA_EMPRESA_ TE
    ON TCOM.FK_ID_TAREA_EMPRESA = TE.PK_ID_TAREA_EMPRESA
    INNER JOIN TAREA_CATEGORIA_ TCA
    ON TCOM.FK_ID_TAREA_CATEGORIA = TCA.PK_ID_TAREA_CATEGORIA
    INNER JOIN TAREA_CLASIFICACION_ TCL
    ON TCOM.FK_ID_TAREA_CLASIFICACION = TCL.PK_ID_TAREA_CLASIFICACION
    WHERE TCOM.FK_ID_TAREA_CLASIFICACION = 70
GROUP BY TCOM.FK_ID_TAREA_EMPRESA, TCOM.FK_ID_TAREA_CATEGORIA, TCOM.FK_ID_TAREA_CLASIFICACION, TCOM.TAREA_TIPO, TCOM.TAREA_CLIENTE, TCOM.TAREA_PETICION;

EXPLAIN将此返回给我:

id  select_type  table   type    possible_keys                                                                      key                          key_len  ref                                               rows  Extra                                         

 1  SIMPLE       TCL     const   PRIMARY                                                                            PRIMARY                      4        const                                                1  Using index; Using temporary; Using filesort  
 1  SIMPLE       TCOM    ref     PRIMARY,FK_COMENTARIO_CLASIFICACION,FK_COMENTARIO_EMPRESA,FK_COMENTARIO_CATEGORIA  FK_COMENTARIO_CLASIFICACION  4        const                                               18                                                
 1  SIMPLE       TCA     eq_ref  PRIMARY                                                                            PRIMARY                      4        FACTURACION_WEB_DEV.TCOM.FK_ID_TAREA_CATEGORIA       1                                                
 1  SIMPLE       TE      ALL     PRIMARY                                                                            (NULL)                       (NULL)   (NULL)                                               3  Using where                                   
 1  SIMPLE       T       ref     TIPO,CLIENTE,PETICION                                                              CLIENTE                      768      FACTURACION_WEB_DEV.TCOM.TAREA_CLIENTE              76  Using where

TE上的“输入ALL”(TAREA_EMPRESA_)是不能停止打扰我的原因,因为它没有意义。我为每一列(包括PRIMARY)都有索引,所以我不知道为什么在连接两个表时它没有使用索引。

这就是我对TE的看法:

柱: Columns

索引:

Indexes

有什么想法吗?提前谢谢!

编辑: TAREA_EMPRESA_包含:

PK_ID_TAREA_EMPRESA  NOMBRE                ORDEN  FECHA_BAJA  

              1  CR ENERGIA                3        (NULL)
              2  SPAIRAL COMMERCE          2        (NULL)
              3  KNET COMUNICACIONES       4        (NULL)
              4  IR SOLUCIONES             1        (NULL)

0 个答案:

没有答案