同じタイムスタンプだとID順にならばない
-
おそらくレアケースだから仕方ないのだろうと思っていますが…。
例えば大量のデータを一度に読み込ませたくて、WordPressが読める形(MT形式を使いました)でデータを作成(エディタの一括置換とか使って)。そのデータを一気に読み込む…なんてことやりますよね。この時、データがバッティングしないように日付フィールドを抜いて作る訳ですが、そうやって読み込んだデータ(エントリ)が正しく並ばない、という現象が出ています。
エントリは作られた順(リビジョンとかあるので必ずしも連番ではない)にIDが振られる訳で、新しいものほどより大きなIDが振られると理解しています。1→2→5→11→14みたいな感じで。
先に書いたようなデータをインポートした場合、日付が入っていない為にファイルの上から順番に登録されていくんですが、その際、1秒以内のものは同じ日付として認識されます(DB上はそうなってる)。だから2011年02月25日11:00:00にインポートを開始したとすると、11:00:00とタイムスタンプが付いてしまうものが数件(サーバーレスポンスや回線による)出るということになります。
この場合、同じ日付のものは登録順に並んでもらうのが美しいのですが、実際には「どれが先にくるかわからない」という現象が出ています。WordPressの関数だけ使って表示しているぶんには気がつきませんが、SQLとかでデータの読み出しを平行して行う場合、得られた結果がWPのqueryと違うというチグハグな結果となります。WPコアのソースを追ってWPのqueryと同じ構文で読み出す…というのも手なんですが、ちょっと複雑なことをしようと思うとそうもいかず、データがズレちゃって…(悩)。
とまぁ、半分愚痴でした。
- トピック「同じタイムスタンプだとID順にならばない」には新たに返信することはできません。