2017-01-31 2 views
1

オブジェクトの物理IDを含むSQLiteのカラムがあります。SQLiteインデックスのベストデータタイプ

この物理IDは、16バイトの情報です。クエリのパフォーマンスを最適化するために、この列にインデックスを作成したいと考えています。

最高のパフォーマンスを得るために、この列に最適なデータ型は何ですか? 32文字長の16進数、int8(16)、その他のデータ型を含むテキストを使用する必要がありますか?

答えて

1

16進数を含むテキストは使用しないでください。私はそれがBLOB(SQLiteはBLOB PRIMARY KEYをサポートする)よりも遅いと思う。それはサイズを倍増させることは言うまでもありません。

SQLiteには整数型が1つしかありません。 (int8またはint16はありません)

物理IDが整数の場合は、INTEGER PRIMARY KEYを使用することをお勧めします。 SQLステートメントに値を埋め込み、SQLステートメントに値をバインドしたり、クエリ結果から値を取得したりするときは、BLOBよりも便利です。

0

通常、整数ベースのインデックスを使用するとパフォーマンスが向上します。しかし、この特定のケースでは、何のメリットもありません。 SQLiteは、最大8バイトの整数しか格納しません。大きいものはテキストとして保存されます。

内部的には、テキストとBLOBは同様の方法で保存されます(テキストはデータベースのエンコードを尊重し、BLOBはそのまま保存されます)。両方をインデックスに登録できます。スキーマ、データ、およびクエリによっては、2つの違いが意味をなさないほど顕著ではない場合があります。その時点で、選択肢は本当にあなたが個人的に働きやすい方に下がります。

関連する問題