dia*_*ers 5 sql sqlite optimization
我正在尝试做一些似乎应该是一个简单的SQL操作,但我只是没有找到正确的语法来快速完成它.我正在使用SQLite.
基本问题是我有一个主键为(objUid,time)的表.它包含objUid,time和frame列.出于此问题的目的,frame是一个不透明的值.
我想为每个objUid提取:objUid,minTime,minTime时帧的值,maxTime,maxTime处帧的值.
......我想尽快做到.
我现在有这个,这有效,但如果我拿出"NATURAL JOIN"语句(这意味着我没有得到"框架"列),事情的速度大约是其两倍.
SELECT * FROM (
SELECT * FROM (
SELECT objUid, min(time) as minTime, max(time) as maxTime FROM motion GROUP BY objUid
) NATURAL JOIN (
SELECT objUid, time as minTime, frame as minFrame FROM motion
)
) NATURAL JOIN (SELECT objUid, time as maxTime, frame as maxFrame FROM motion)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
谢谢!
使用:
SELECT x.objuid,
y.time,
y.frame,
z.time,
z.frame
FROM (SELECT m.objuid,
MIN(m.time) AS min_time,
MAX(m.time) AS max_time
FROM MOTION m
GROUP BY m.objuid) x
JOIN MOTION y ON y.objuid = x.objuid
AND y.time = x.min_time
JOIN MOTION z ON z.objuid = x.objuid
AND z.time = x.max_time
Run Code Online (Sandbox Code Playgroud)