Mysql
 sql >> Base de données >  >> RDS >> Mysql

Entre les index manquants dans certains cas

Si une telle requête renvoie au maximum une ligne, cela signifie que le (sATON, eATON) les plages ne se chevauchent pas.

Par conséquent, et seulement si les plages ne se chevauchent pas, vous pouvez utiliser cette requête à la place :

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

ou même celui-ci (qui n'utilisera qu'un seul index, le sATON un):

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