0

私のデータセットは、ハードドライブのID、空き領域の割合、タイムスタンプの3行のテーブルです。表には、20分ごとに各HDD(そのうち1200台)の新しい状態が追加されます。

HDDプールの最後の状態を選択する場合は、MAX(タイムスタンプ)を選択し、最も古い状態を選択する場合は、MIN(タイムスタンプ)を選択します。

しかし、特定のタイムスタンプがあるとすると、このタイムスタンプの前後X秒からデータを取得するようにMySQLに要求するにはどうすればよいですか?

4

2 に答える 2

1
WHERE yourTimeStamp 
  between TIMESTAMPADD(SECOND,-3,yourtimestamp) 
      and TIMESTAMPADD(SECOND, 3,yourtimestamp)

ここで、Xの代わりに-3と+3が使用されました

詳細については、 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampaddを参照してください。

于 2012-05-19T16:07:50.847 に答える
1

このような:

WHERE timestamp BETWEEN DATE_SUB('<given_timestamp>', INTERVAL 5 SECOND) 
    AND DATE_ADD('<given_timestamp>', INTERVAL 5 SECOND);

他の回答で述べたように、選択がフィールドに基づいている場合、クエリは遅くなりtimestampます。

INDEXその列にを追加して、速度を上げることができます。

ALTER TABLE <table_name> ADD INDEX(`timestamp`)

テーブルのサイズによっては、最初にインデックスを追加するときに時間がかかることに注意してください。次に、INSERTクエリの速度が低下し、データベースのサイズが大きくなります。これは人によって異なりますので、テストして調べる必要があります。

于 2012-05-19T16:09:56.527 に答える