sql >> Database teknologi >  >> RDS >> Mysql

Hvilket indeks skal jeg bruge, når jeg bruger JOIN på PRIMARY KEY

Der er to potentielle indekseringsstrategier her, afhængigt af hvilken af ​​de to tabeller, der vises på venstre side af den indre joinforbindelse (en af ​​tabellerne kan potentielt vises på hver side af joinforbindelsen). Da HotelRoom tabellen indeholder sandsynligvis mange flere poster end Hotel tabel, vil jeg foreslå at placere Hotel bord i venstre side af sammenføjningen. Dette ville indebære, at Hotel tabellen ville blive scannet, og indekset brugt til sammenføjningen til HotelRoom . Derefter kan vi prøve at bruge følgende indeks på HotelRoom :

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled, Name, RoomId);

Dette bør fremskynde joinforbindelsen betydeligt, dækker WHERE klausul, og dækker også alle kolonner i select on HotelRoom . Bemærk, at følgende forenklede indeks også kan være meget effektivt:

CREATE INDEX hotel_room_idx ON HotelRoom (HotelId, Deleted, Enabled);

Dette dækker kun sammenføjningen og WHERE klausul, men MySQL kan stadig vælge at bruge den.



  1. Analyser Big Data med Microsoft Azure Tools

  2. Sådan gemmer du kun tid; ikke dato og tid?

  3. Hvordan bruger man det modsatte af BETWEEN i en MySQL-forespørgsel?

  4. Forskel mellem DECIMAL og NUMERIC datatype i PSQL