BETWEEN skal bedre end IN i dette tilfælde (men gør mål og kontroller også udførelsesplaner!), især som n vokser, og da statistikker stadig er nøjagtige. Lad os antage:
mer størrelsen på dit bordner størrelsen på dit område
Indeks kan bruges (n er lille sammenlignet med m )
-
I teorien
BETWEENkan implementeres med en enkelt "range scan" (Oracle speak) på det primære nøgleindeks, og derefter krydse højstnindeksbladsknuder. Kompleksiteten vil væreO(n + log m) -
INer normalt implementeret som en serie (loop) afn"range scans" på det primære nøgleindeks. Medmer størrelsen af tabellen, vil kompleksiteten altid væreO(n * log m)... hvilket altid er værre (ubetydeligt for meget små tabellermeller meget små områdern)
Indeks kan ikke bruges (n er en betydelig del af m )
Under alle omstændigheder får du en fuld tabelscanning og evaluerer prædikatet på hver række:
-
BETWEENskal evaluere to prædikater:Et for den nedre og et for den øvre grænse. Kompleksiteten erO(m) -
INskal højst evaluerenprædikater. Kompleksiteten erO(m * n)... hvilket igen altid er værre, eller måskeO(m)hvis databasen kan optimereINliste til at være et hashmap, snarere end en liste over prædikater.