0

主キーを秒単位の正確なタイムスタンプとして設定できます。ただし、新しい行が最低 1 秒間隔で挿入された場合にのみ、意図したとおりに機能します。解像度をマイクロ秒まで上げることができますが、それはやり過ぎでスローなものになるのでしょうか。

時間通りに並べ替えるのは簡単なので、タイムスタンプが必要ですが、1 秒以上の処方箋は気にしません。

それらを生成する良い方法は何ですか?

4

2 に答える 2

2

MySQL にタイム スタンプを自動的に生成させたい場合は、主キーとして AUTO INCREMENT 番号を使用しながら、タイムスタンプ カラムをデフォルト値で定義できます。

create temporary table tbl (
    id int auto_increment primary key,
    ts timestamp default current_timestamp
    -- other columns follow...
);

新しいデータを挿入するには、 と の値を省略しidますts

insert into tbl values ();

select * from tbl;
+----+---------------------+
| id | ts                  |
+----+---------------------+
|  1 | 2012-09-20 18:24:21 |
+----+---------------------+

頻繁に検索したり並べ替えたりする場合は、タイムスタンプ列にインデックスを定義してください...

于 2012-09-20T16:27:41.497 に答える
2

それはすべて、処理するクエリによって異なります。

実際には、TIMESTAMP代理主キーと一部の代理主キーの両方を使用できます。後者は通常どおり auto_incremented になり、前者は一部のソート クエリに対して同様にインデックス化される場合があります。

CREATE TABLE sometable (
  sometable_id INT NOT NULL AUTO_INCREMENT,
  ...
  ts TIMESTAMP,
  PRIMARY KEY (sometable_id),
  KEY (ts)
);

...または、サロゲートキーを完全に削除して、PRIMARY KEY-w なしで単一のINDEXオーバーカラムを使用することもできます ( !=TIMESTAMPを思い出してください)。INDEXUNIQUE

ただし、最初のアプローチを使用します。より柔軟で拡張可能です。

于 2012-09-20T16:24:10.153 に答える