64 ビット整数のタイムスタンプと Sting ユーザー名を 1 つの文字列に結合し、最終的にデータベース列に格納します。それらを適切な型の別々の列に保存できない理由は別として、私の質問は、それらを組み合わせて基礎となるデータベースのパフォーマンスを向上させる方法です。それは sqlite、PostgreSQL、または MySQL になりますが、まだわかりません。
タイムスタンプは通常常に進行し、ツリーは頻繁にバランスを取る必要があるため、(timestamp-username) のように連結するのは良くありません。username-timestamp ははるかに優れているはずですが、それでも各ユーザー レコードは新しいエントリごとに増加します。タイムスタンプもビットの逆順で入れようと思っていました。
他にできることはありますか?賢いxorか何か?合理的に最適なスキーマは何でしょうか? データは、範囲などではなく、正確に生成された文字列を要求することによってアクセスされます。
唯一の要件は、生成された文字列とソース データの間で、両方の方法で比較的高速に変換することです。
更新: 皆さん、データベース (sqlite、mysql、postgresql のいずれか) の主キーとして格納するのに適した文字列の種類について情報を求めています。おそらく答えは、問題ではないか、DB エンジンに依存しているということです。使用しているスキーマやキャッシュ ソリューションに特に問題はありません。改善の余地があるかどうか、そしてその方法を尋ねているだけです。話題に沿った回答をいただければ幸いです。
UPDATE2:素晴らしい答えはまだ決定的ではありません: インクリメントされた列は、列のbツリーインデックスを不均衡にしますか? https://stackoverflow.com/a/2362693/520567