1

私は比較的 sql(ite) に不慣れで、新しいプロジェクトに取り組みながら学んでいます。1 つの「データ」テーブルに何百万ものトランザクション行があり、1 つのフィールドは「sessionid」フィールドです。

ここではセッション内のアクティビティに集中したいので、主に同じセッションからのトランザクションのみを確認する必要があります。

私の直感では、データベースをセッションごとに多数の単一セッション テーブルに分割すると、常に単一のセッション ID を照会してから続行するよりもはるかに高速になります。私の質問: それは正しいですか? それは違いを生むでしょうか?

そうでない場合でも: 1 つの「データ」テーブル行を多くのセッション固有のテーブルに分割し、行を同じままにする方法を教えてください。さらに、sessionIds をテーブルに関連付ける 1 つのテーブルはありますか?

ありがとう!


友人が私に言ったところによると、テーブルに分割することは非常に柔軟性がなく、異なる sessionId 行の代わりに個別のインデックスを追加して、単一のセッションにより速くアクセスする必要があります。それについての考えと、それを最善に行う方法はありますか?

4

1 に答える 1

0

まず、これまでに特定のパフォーマンスのボトルネックはありましたか? はいの場合は、それについて説明してください。

セッションごとに 1 つのテーブルを使用すると、ルックアップ/インデックス ( INSERTs の場合) が高速化される可能性があります。

SQLite はテーブルの数に制限を課していないので、大丈夫です。

メンテナンスを容易にするもう 1 つの解決策は、1 日または 1 週間に 1 つのテーブルを作成することです。

セッションの長さに応じて、これが実現可能かどうかが決まります。

関連: https://stackoverflow.com/a/811862/89771

于 2013-05-15T12:18:16.703 に答える