sql >> データベース >  >> RDS >> SQLite

AndroidでSQLiteにAUTOINCREMENTを使用する場合のオーバーヘッドは何ですか?

    私は統計家ではないことに注意して、私の見積もりでは、オーバーヘッドは 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つの表を比較すると、トランザクションの使用がパフォーマンスにもたらすメリットが浮き彫りになります。




    1. sqliteデータベースに画像を挿入するにはどうすればよいですか?

    2. ASYNC NETWORK IO待機タイプをどうするか?

    3. MySQLで重複する行を見つける4つの方法

    4. SQLでの順序付けされていない結果