BETWEEN harus mengungguli IN dalam hal ini (tetapi lakukan ukur dan periksa juga rencana eksekusi!), terutama sebagai n tumbuh dan sebagai statistik masih akurat. Mari kita asumsikan:
madalah ukuran meja Andanadalah ukuran jangkauan Anda
Indeks dapat digunakan (n kecil dibandingkan dengan m )
-
Secara teori,
BETWEENdapat diimplementasikan dengan satu "pemindaian rentang" (Oracle berbicara) pada indeks kunci utama, dan kemudian melintasi paling banyaknsimpul daun indeks. Kompleksitasnya adalahO(n + log m) -
INbiasanya diimplementasikan sebagai rangkaian (loop) darin"range scan" pada indeks kunci utama. Denganmmenjadi ukuran tabel, kompleksitas akan selaluO(n * log m)... yang selalu lebih buruk (diabaikan untuk tabel yang sangat kecilmatau rentang yang sangat keciln)
Indeks tidak dapat digunakan (n adalah bagian penting dari m )
Bagaimanapun, Anda akan mendapatkan pemindaian tabel lengkap dan mengevaluasi predikat pada setiap baris:
-
BETWEENperlu mengevaluasi dua predikat:Satu untuk batas bawah dan satu untuk batas atas. Kompleksitasnya adalahO(m) -
INperlu mengevaluasi paling banyaknpredikat. Kompleksitasnya adalahO(m * n)... yang lagi-lagi selalu lebih buruk, atau mungkinO(m)jika database dapat mengoptimalkanINlist menjadi hashmap, bukan daftar predikat.