画期的な方法を発見した。MySQL 5.5 の UUID()
関数は、100ナノ秒精度の現在時刻を含んだ UUID v1 を返す(12.15. Miscellaneous Functions)。これをパースすればマイクロ秒精度の現在時刻を取得することができる。
詳しい実装についてはmysqldのソースに書いてあるので読めばいい。mysql-5.5.27/sql/item_strfunc.cc
に実装してある。141427日間のオフセットがかかっていたりするので気をつける。
DELIMITER //
CREATE FUNCTION TIMESTAMP_USEC()
RETURNS BIGINT NOT DETERMINISTIC