Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Qual índice devo usar ao usar JOIN em PRIMARY KEY


Existem duas estratégias de indexação potenciais aqui, dependendo de qual das duas tabelas aparece no lado esquerdo da junção interna (qualquer tabela pode aparecer em ambos os lados da junção). Dado que o HotelRoom provavelmente contém muito mais registros do que o Hotel tabela, sugiro colocar o Hotel tabela no lado esquerdo da junção. Isso implicaria que o Hotel tabela seria escaneada e o índice usado para a junção a HotelRoom . Então, podemos tentar usar o seguinte índice em HotelRoom :
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);

Isso deve acelerar substancialmente a junção, abrange o WHERE cláusula, e também cobre todas as colunas no select em HotelRoom . Observe que o seguinte índice simplificado também pode ser muito eficaz:
CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);

Isso cobre apenas a junção e WHERE cláusula, mas o MySQL ainda pode optar por usá-la.