índices sobre tablas que abarcan dos

Kylie:

¿Es posible crear índices sobre tablas que abarcan? Supongamos que quiero para optimizar esta consulta:

SELECT tbl1.col1,
       tbl2.col2
  FROM tbl1 INNER JOIN
       tbl2 ON tbl1.col1 = tbl2.col1
 WHERE tbl1.col3 = ... 

Será la creación de estos índices de ayuda?

INDEX (col3, col1) -- tbl1's
INDEX (col1, col2) -- tbl2's 
Rick James:

Suponiendo que esta es la consulta completa ...

SELECT  a.col1, b.col2
    FROM  tbl1 AS a
    INNER JOIN  tbl2 AS b  ON a.col1 = b.col1
    WHERE  a.col3 = constant

Análisis:

Debido a la cláusula WHERE, tbl1 se miraba primero y este será el índice óptimo:

INDEX(col3, col1) == handles the WHERE, plus it is "covering"

A continuación, el bucle anidado Ingreso en TBL2 tendrá un índice a partir de col:

INDEX(col1, col2) -- again "covering"

Ver también http://mysql.rjweb.org/doc.php/index_cookbook_mysql

El título ( "... lapso de dos tablas") es engañosa. Ninguno de estos índices implica más de una tabla. INDEX(col2, col3)no es posible porque se trata de más de una tabla.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=277429&siteId=1
Recomendado
Clasificación