保存マイクロ秒単位でMySQL:を回避策?
-
20-09-2019 - |
質問
ち書きを科学的ツールとMySQLです。問題は、マイクロ秒精度は当社のdatetime、情報-電子系、生命系、環境系MySQLな現。私見では少なくとも二つの回避策はこちら
- 用decimal()列タイプは、整数部分に対応する秒以来、一定時間(かりではないように思える画期的なUNIXいている店で計測された測定値を60 50ます。
- を用いた整数カラムの一秒のためのマイクロ秒単位.
最も人気のクエリを選択カラムに対応する時間間隔(dt_record>time1、dt_record < time2).
するとのことですが、その方法(しょう)することが重要となるこの高性能大型の場合は表(単位百万列)?
解決
、の私はあなたの最初のオプションののように時間を保存する単一の列と一緒に行くお勧めします。
あなたはアプリケーションのための独自のエポックを選んで、そこから仕事ができるます。
これは、時間間隔を検索する際に書き込む必要があるクエリを簡素化する必要があります。
また、 10.3.1を見てみましょう。 DATETIME、DATE、そしてTIMESTAMPタイプの
しかし、マイクロ秒を保存することができません 任意の一時的なデータの列に タイプ。任意のマイクロ秒の部分があります 廃棄されました。 TIMEの変換や 数値形式のDATETIME値(のための 例えば、中+0)の結果を加算することにより マイクロ秒部分を持つdouble値 0.000000の
他のヒント
MySQLはのMySQL 5.6を参照して、マイクロ秒をサポートします0.4チェンジするます:
取り扱いフラクショナル秒
互換性のない変更:MySQLは今TIMEのため小数点以下の秒を許可し、 DATETIME、およびTIMESTAMP値、最大マイクロ秒(6桁)と 精度。小数点以下の秒の部分を含んでいる列を定義するには、 type_nameがTIME、DATETIME、またはある場合、構文TYPE_NAME(FSP)を使用します TIMESTAMP、およびFSPは、小数秒の精度です。たとえばます:
テーブルT1(T時間(3)、DT DATETIME(6))を作成します。 FSP値、与えられた場合には、 0の値が全く存在することを意味していない0〜6の範囲でなければなりません 小数部分。省略した場合、デフォルトの精度は0です(この異なりです 6の標準SQLのデフォルトから、以前との互換性のために MySQLのバージョンがあります。)
以下の項目は、この変更の影響をまとめたもの。見る また、セクション10.3.5、「時間値の秒の小数」ます。
どのように深夜から日付のみの部分に日付部分を分割し、マイクロ秒程度?日未満2 ^ 64マイクロ秒があります。次に{日付、マイクロ}の表をクラスタ化します。
私は特定のクエリは、日レベルの精度で罰金だろうと、あなたのデータを知らないのに私は、推測 - 「1964年の実験では、」マイクロ秒を心配する必要はありません。