sql >> Database teknologi >  >> RDS >> Mysql

Mellem udsagn mangler indekser i visse tilfælde

Hvis en sådan forespørgsel vil returnere maksimalt én række, betyder det, at (sATON, eATON) intervaller overlapper ikke.

Derfor og kun hvis intervallerne ikke overlapper, du kan bruge denne forespørgsel i stedet:

SELECT * 
FROM data2 
WHERE sATON = 
      ( SELECT MAX(sATON)
        FROM data2 
        WHERE sATON <= 1112203488
      )
  AND eATON = 
      ( SELECT MIN(eATON)
        FROM data2 
        WHERE eATON >= 1112203488
      )

eller endda dette (der kun skal bruge ét indeks, sATON en):

SELECT * 
FROM data2 
WHERE sATON = 
      ( SELECT MAX(sATON)
        FROM data2 
        WHERE sATON <= 1112203488
      )
  AND eATON >= 1112203488


  1. Opret MySQL rumlig kolonne - Punkt Datatype med lat long uden at bruge Alter-tabellen

  2. Ændring af store MySQL InnoDB-tabeller

  3. Hvordan kan jeg gemme '€'-symbolet i MySQL ved hjælp af PHP?

  4. mysqldump-tabel uden at dumpe den primære nøgle