JOIN
urutan dapat dipaksakan dengan meletakkan tabel dalam urutan yang benar di FROM
klausa:
-
MySQL memiliki klausa khusus yang disebut
STRAIGHT_JOIN
yang 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.StatusID
Dan 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
ORDERED
untuk menegakkanJOIN
pesanan:Ini akan menggunakan indeks di
b.id
atau buat tabel hash dib
:SELECT /*+ ORDERED */ * FROM a JOIN b ON b.ID = a.StatusID
Dan ini akan menggunakan indeks pada
a.StatusID
atau buat tabel hash dia
:SELECT /*+ ORDERED */ * FROM b JOIN a ON b.ID = a.StatusID
-
SQL Server memiliki petunjuk yang disebut
FORCE ORDER
untuk melakukan hal yang sama:Ini akan menggunakan indeks di
b.id
atau buat tabel hash dib
:SELECT * FROM a JOIN b ON b.ID = a.StatusID OPTION (FORCE ORDER)
Dan ini akan menggunakan indeks pada
a.StatusID
atau 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.