General

あるアイテムと前後のものを同時に取得

2008年1月16日

表題のためのクエリ:

SELECT  i.inumber as thisid, j.inumber as previd, k.inumber as nextid 
FROM nucleus_item as i,nucleus_item as j,nucleus_item as k 
WHERE i.inumber=10 AND j.itime<=i.itime AND i.itime<=k.itime 
AND NOT (i.inumber=j.inumber OR i.inumber=k.inumber) 
ORDER BY TIMEDIFF(j.itime,k.itime) DESC LIMIT 1
クエリー実行 0.0021 秒

ただし、最新の記事もしくは最古の記事でこれを行うと、失敗する。

一方、ある記事と一つ古い記事を一度に取得する場合

SELECT  i.inumber as thisid, j.inumber as previd 
FROM nucleus_item as i,nucleus_item as j 
WHERE i.inumber=6 AND j.itime<=i.itime 
GROUP BY j.itime ORDER BY j.itime DESC LIMIT 1,1
クエリー実行 0.0004 秒

ある記事と一つ新しい記事のケースもほぼ同じ様に書けるから、これら2回のクエリーに分けたほうが早いか…。

コメント

コメントはありません

コメント送信