sql >> Database >  >> RDS >> Mysql

Tussen instructie ontbrekende indexen in bepaalde gevallen

Als een dergelijke zoekopdracht maximaal één rij oplevert, betekent dit dat de (sATON, eATON) bereiken overlappen elkaar niet.

Daarom, en alleen als de bereiken elkaar niet overlappen, je kunt in plaats daarvan deze zoekopdracht gebruiken:

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

of zelfs dit (die slechts één index hoeft te gebruiken, de sATON een):

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


  1. Hoe zet ik deze complexe SQL om in een Django-modelquery?

  2. Grondbeginselen van tabeluitdrukkingen, deel 3 – Afgeleide tabellen, overwegingen voor optimalisatie

  3. Hoe het jaar uit een Datetime-kolom in MySQL te halen

  4. Alternatieve oplossing voor DCount en DLookup met MS SQL Server Backend