中規模のテーブル(60GB、5億行)を投入しています。テーブルにプライマリキーがない場合(一括挿入を使用して〜1時間)にはプロセスはかなり速く完了しますが、プライマリキーを使用してそのテーブルを作成すると〜10倍の時間がかかります。これは、一意性制約を検証し、各挿入時にインデックスを更新するのに時間がかかるためと考えています。主キーのパフォーマンスの問題
すでに実装されている表の索引付けは、増分索引付けに比べてはるかに高速でなければならないため、後で主キーを追加することをお勧めします。しかし、sqliteは、テーブルが作成された後にプライマリキーを追加するオプションを持っていないようです(理由は分かりませんか?)。
私は、プライマリキーをまったく使用することはできず、代わりに表が移入された後にユニークなインデックスを追加することができると思います。それに不利な点はありますか?
その他の推奨ソリューションはありますか?
しかし、あなたのリンクされた答えによると、プライマリキーはINTEGERカラムにあるとパフォーマンス上の利点がありますか? – max
はい、テーブルが異なるタイプを使用していました。 –
INTEGER PRIMARY KEYは挿入の速度を落とさないでしょう。 –