» »

[SQLite] optimizacija poizvedbe

[SQLite] optimizacija poizvedbe

Karlos ::

Zanima me če se da spodnjo poizvedbo še kaj optimizirati?
Se pravi vrniti mora čas ki je manjši ali enak ?. V primeru da obstajajo samo časi večji od ? pa vrne najmanjšega.

select max(time) as time from names where time <= ?
union
select min(time) from names ORDER BY time DESC LIMIT 1

Online demo
Sai Baba: "Dam vam to, kar hočete, da boste hoteli to, kar vam želim dati."

Sergio ::

O SQLite ne vem veliko, ampak ce imas indekse (b-index na polju time), bi mogoce to delalo hitreje:

select time from names where time <= ? order by time desc limit 1
UNION
select time from names order by time limit 1
ORDER BY time DESC limit 1
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Zgodovina sprememb…

  • spremenil: Sergio ()

OracleDev ::

Ali imaš tako verzijo da ti podpira WITH stavke. Če imaš bi jest tkole nekak napisu:
with x as
 (select max(time) as time from names where time <= 0)
select case
         when x.time is not null then
          x.time
         else
          (select min(time) from names)
       end
  from x

Karlos ::

@OracleDev hvala, zgleda in deluje super.
Sai Baba: "Dam vam to, kar hočete, da boste hoteli to, kar vam želim dati."


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

java date/time

Oddelek: Programiranje
111549 (1232) Slovenet
»

[C#] Evidenca oseb

Oddelek: Programiranje
71179 (864) DaMachk
»

[Android] Izklop/Vklop vsak dan ob isti uri - problem

Oddelek: Programiranje
101235 (1050) mallard
»

[C] Random funkcija

Oddelek: Programiranje
92344 (2175) primozsu
»

[C] cas, time_t

Oddelek: Programiranje
171621 (1459) Imortales

Več podobnih tem