今週初め、実行時に重複する値を順番に除外する方法について質問しました。いくつかの良い答えがありましたが、調べていたデータの量が遅くなり、実行可能ではありませんでした.
現在、データベースでは、イベント値はフィルタリングされていません。データ値が重複する (さまざまなタイムスタンプを持つ)。実行時にそのデータを処理する必要があり、データベース レベルでは時間がかかります (また、ストアド プロシージャで頻繁に使用されるため、コードに取り込むことができません)。その結果、クエリ時間が長くなります。実行時に追加のフィルタリングが必要ないように、このデータ ストアをフィルタリングしてクエリできるデータ構造が必要です。
現在、DBにある
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「1」、「2008-05-08 04:03:47.000」
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「0」、「2008-05-08 10:02:08.000」
- 'F07331E4-26EC-41B6-BEC5-002AACA58337', '0', '2008-05-09 10:03:24.000' (これを削除する必要があります) **
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「1」、「2008-05-10 04:05:05.000」
私たちの必要なもの
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「1」、「2008-05-08 04:03:47.000」
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「0」、「2008-05-08 10:02:08.000」
- 「F07331E4-26EC-41B6-BEC5-002AACA58337」、「1」、「2008-05-10 04:51:05.000」
これは些細なことのように思えますが、私たちの問題は、ワイヤレス デバイスからこのデータを取得することです。その結果、パケットのシーケンスが乱れ、ゲートウェイがマルチスレッド化されているため、取得した値が正しいことを保証できません。4 秒前は「1」、2 秒前は「0」のように何かが入ってくるかもしれませんが、「1」は最初に入っていたので既に処理しています。データをデータベースの最新の値と比較することはできません。実際には最新の値がまだ入っていない可能性があるためです。したがって、現在、入ってくるすべての値を保存し、データベースは時間に基づいて自分自身をシャッフルします..しかし、イベントはまだアクティブであるため、ユニットは 1,1,1,0 とその有効な値を送信できます。
何か案は?
さらに情報が必要かどうか尋ねます。
[編集] PK 機能しません - 問題は、ユニットが実際に異なるタイムスタンプを送信することです。1,1,1 は同じなので PK は機能しませんが、タイムスタンプが異なります。そのようなイベントは time1 で発生し、イベントは time2 で引き続き発生し、両方が返されます..同じ値の異なる時間。