Forum » Programiranje » [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.
Online demo
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.
č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 ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | java date/timeOddelek: Programiranje | 1549 (1232) | Slovenet |
» | [C#] Evidenca osebOddelek: Programiranje | 1179 (864) | DaMachk |
» | [Android] Izklop/Vklop vsak dan ob isti uri - problemOddelek: Programiranje | 1235 (1050) | mallard |
» | [C] Random funkcijaOddelek: Programiranje | 2344 (2175) | primozsu |
» | [C] cas, time_tOddelek: Programiranje | 1622 (1460) | Imortales |