sql >> Database teknologi >  >> RDS >> Oracle

Konvertering mellem klausul til joins

Hvad du har hørt om rækkeviddescanninger og between i MySQL er simpelthen ikke sandt. Her er et citat fra dokumentationen :

Så brugen af ​​et indeks er ikke overraskende. Det bedste indeks for disse data ville være et sammensat indeks på start, end .

Problemet du har er, at du har to kolonner start og end . Dette gør forespørgslen lidt mere kompliceret.

Følgende kunne tænkes at fungere bedre under nogle omstændigheder med et indeks på start og et separat indeks på end og en primær nøgle på rækkerne:

select gt.*
from (SELECT * FROM autumn4.ip WHERE :number >= start) gt join 
     (SELECT * FROM autumn4.ip WHERE :number <= end) lt
     on gt.PRIMARYKEY = lt.PRIMARYKEY;


  1. Hvordan kontrollerer man, om en værdi allerede eksisterer for at undgå dubletter?

  2. Oracle REF kan ikke gå igennem

  3. Opdater en kolonne i MySQL

  4. Hvad vil der ske, hvis jeg dræber en enorm MySQL InnoDb DELETE-forespørgsel?