sql >> Database >  >> RDS >> Oracle

Omzetten tussen clausule naar joins

Wat je hebt gehoord over bereikscans en between in MySQL is gewoon niet waar. Hier is een citaat uit de documentatie :

Het gebruik van een index is dus niet verwonderlijk. De beste index voor deze gegevens is een samengestelde index op start, end .

Het probleem dat je hebt is dat je twee kolommen hebt start en end . Dit maakt de zoekopdracht een beetje ingewikkelder.

Het volgende zou onder bepaalde omstandigheden mogelijk beter kunnen presteren, met een index op start en een aparte index op end en een primaire sleutel op de rijen:

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. Verwijder aanhalingstekens en komma's uit een tekenreeks in MySQL

  2. Hoe verwerkt MySQL ORDER BY en LIMIT in een query?

  3. Vind rijen met uitstelperiodes en accumuleer hun duur

  4. PHP Mysql - Verwijder knop blijft de laatste rij verwijderen