sql >> Databáze >  >> RDS >> Mysql

MySQL - SQLite Jak vylepšit tento velmi jednoduchý dotaz?

1) Ujistěte se, že máte index na časovém razítku

2) Za předpokladu, že id_tick je PRIMÁRNÍ KLÍČ i Clusterový index, a za předpokladu, že se id_tick zvyšuje jako funkce času (protože děláte MAX)

Můžete zkusit toto:

SELECT id_tick, price, timestamp 
FROM EURUSD 
WHERE id_tick = (SELECT id_tick
                   FROM EURUSD WHERE timestamp <='2010-04-16 15:22:05'
                   ORDER BY id_tick DESC
                   LIMIT 1)

To by však mělo být podobné výkonu janmoesena, protože by každopádně měla existovat vysoká korelace mezi id_tick a časovým razítkem



  1. Platné formáty časových řetězců pro funkce data/času SQLite

  2. SQLSTATE[42000]:Chyba syntaxe nebo porušení přístupu:1064 Máte chybu v syntaxi SQL — PHP — PDO

  3. Jedinečné klíče MyISAM jsou oříznuty na 64 bajtech, což způsobuje kolize

  4. MariaDB JSON_COMPACT() vysvětleno