私は統計家ではないことに注意して、私の見積もりでは、オーバーヘッドは 8〜12%のようなものです。 遅い。
3を使用して結果を取得しました 構造的に類似したシンプルなテーブル 10,000を実行する2つのTEXT列 各テーブルごとに挿入し、4台のデバイスでこれを5回繰り返します。
表1(Dflt列) 2つのTEXT列のみで作成されました(したがって、デフォルトのROWIDを使用します)。
表2(AI列) _id INTEGER PRIMARY KEY AUTOINCREMENT
を使用して作成されました 2つのTEXT列に加えて。
表3(AI列なし) _id INTEGER PRIMARY KEY
を使用して作成されました 2つのTEXT列に加えて。
したがって、表2 わずかに異なるROWID選択アルゴリズムを使用します インサート用。
使用された4つのデバイスは:-
-
(1)Genymotionエミュレートされたデバイス(カスタムタブレット-5.1.0-API 22-1536x2048)
-
(2)Onix 10 "タブレット(AT101-1116)
-
(3)HTC 1 M8(HTC_0PKV1)
-
(4)Lenevo A10-30タブレット(Lenovo TB2-X30F)
私が得た結果は:-
すべてが1つのトランザクションで実行される場合(つまり、beginTransaction();
の場合、結果はより良好になります。 挿入の前に、setTransactionSuccessful();
を使用します およびendTransaction();
すべての挿入後(すべてのテーブル、つまり150,000の挿入全体)、例: :-
2つの表を比較すると、トランザクションの使用がパフォーマンスにもたらすメリットが浮き彫りになります。