JOIN urutan dapat dipaksakan dengan meletakkan tabel dalam urutan yang benar di FROM klausa:
-
MySQL memiliki klausa khusus yang disebut
STRAIGHT_JOINyang membuat pesanan menjadi penting.Ini akan menggunakan indeks di
b.id:SELECT a.Name, b.Status FROM a STRAIGHT_JOIN b ON b.ID = a.StatusIDDan ini akan menggunakan indeks pada
a.StatusID:SELECT a.Name, b.Status FROM b STRAIGHT_JOIN a ON b.ID = a.StatusID -
Oracle memiliki petunjuk khusus
ORDEREDuntuk menegakkanJOINpesanan:Ini akan menggunakan indeks di
b.idatau buat tabel hash dib:SELECT /*+ ORDERED */ * FROM a JOIN b ON b.ID = a.StatusIDDan ini akan menggunakan indeks pada
a.StatusIDatau buat tabel hash dia:SELECT /*+ ORDERED */ * FROM b JOIN a ON b.ID = a.StatusID -
SQL Server memiliki petunjuk yang disebut
FORCE ORDERuntuk melakukan hal yang sama:Ini akan menggunakan indeks di
b.idatau buat tabel hash dib:SELECT * FROM a JOIN b ON b.ID = a.StatusID OPTION (FORCE ORDER)Dan ini akan menggunakan indeks pada
a.StatusIDatau buat tabel hash dia:SELECT * FROM b JOIN a ON b.ID = a.StatusID OPTION (FORCE ORDER) -
PostgreSQL teman-teman, maaf. Daftar TODO . Anda mengatakan:
Petunjuk pengoptimal (tidak diinginkan)
Petunjuk pengoptimal digunakan untuk mengatasi masalah di pengoptimal. Kami lebih suka masalah dilaporkan dan diperbaiki.
Adapun urutan perbandingan, tidak masalah dalam RDBMS , AFAIK.
Padahal saya pribadi selalu mencoba memperkirakan kolom mana yang akan dicari dan meletakkan kolom ini di sebelah kiri (agar terlihat seperti lvalue ).
Lihat jawaban ini untuk lebih detail.