あるアイテムと前後のものを同時に取得
2008年1月16日
表題のためのクエリ:
ただし、最新の記事もしくは最古の記事でこれを行うと、失敗する。
一方、ある記事と一つ古い記事を一度に取得する場合
ある記事と一つ新しい記事のケースもほぼ同じ様に書けるから、これら2回のクエリーに分けたほうが早いか…。
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回のクエリーに分けたほうが早いか…。