2

ほとんどすべてのクエリで、収集時間順に並べられたデータを選択したい時系列データのテーブルがあります。タイムスタンプ列はありますが、これに実際のタイムスタンプを使用したくありません。2 つのエントリのタイムスタンプが同じである場合、収集された順序で並べ替えることが重要であるためです。これは、私が持っている情報です。時間を挿入します。

私の現在のスキーマにはタイムスタンプ列しかありません。コレクション/挿入時間に基づいてソートできるようにスキーマを変更し、コレクション/挿入順序でのクエリが効率的であることを確認するにはどうすればよいですか?

4

2 に答える 2

2

シーケンス (シリアル) に基づいて列を追加し、(timestamp_column, serial_column) にインデックスを作成します。次に、次のようにして、(多かれ少なかれ)広告掲載オーダーを設定できます。

ORDER BY timestamp_column, serial_column;
于 2013-02-12T19:35:10.173 に答える
1

insert_orderというSERIAL列を使用できます。このように、同じ値を持つ2つの行はありません。ただし、絶対時間順であるという要件を達成できるかどうかはわかりません。

たとえば、T1とT2の2つのトランザクションがあり、それらが同時に発生し、複数のプロセッサを搭載したマシンで実行している場合、実際にはT1とT2の両方がまったく同じ瞬間に挿入を行いました。これはあなたが心配しているケースですか?あなたの質問が正確に知るのに十分な情報がありませんでした。

また、シリアル列にはギャップの問題があります。たとえば、T1クラウドはシリアル値14を取得し、T2は値15を取得できます。その後、T1はロールバックし、T2はロールバックしないため、insert_order列にギャップがある可能性があることを予期する必要があります。 。

于 2013-02-12T16:17:13.493 に答える