Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zwischen den Anweisungen fehlen in bestimmten Fällen Indizes

Wenn eine solche Abfrage maximal eine Zeile zurückgibt, bedeutet dies, dass (sATON, eATON) Bereiche überschneiden sich nicht.

Daher und nur dann, wenn sich die Bereiche nicht überschneiden Sie können stattdessen diese Abfrage verwenden:

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

oder sogar dieser (der nur einen Index verwenden muss, den sATON eins):

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