1

各行 (映画) にいくつかの数値タグ (映画のカテゴリ) があるデータベース テーブルがあります。現在、これらすべてのタグを文字列として同じ列に配置し、%LIKE% を使用してそれらを検索します。これにより、特定のカテゴリのすべての映画を検索する必要がある場合、テーブル全体のスキャンに時間がかかります。

これらのタグの検索を高速化したいのですが、考えられる唯一の解決策は、2 つの整数列を持つ 2 つ目のテーブルを作成することです。最初のものには単一のカテゴリが含まれ、2 番目のものにはムービーの行 ID が含まれます。

ただし、これにはデータベースへの挿入がさらに必要になります。1 行には平均 10 個のタグがあるため、1 行挿入する代わりに 11 行挿入する必要があります。私のアプリケーションは実際のクエリよりもはるかに多くの挿入を行うため、挿入のパフォーマンスは非常に重要です。

挿入パフォーマンスを犠牲にすることなく、これを解決する別の方法はありますか? または、10列の1行と2列の10行の挿入に大きな違いはありませんか?

4

1 に答える 1

1

インデックスを更新する必要があるため、挿入のパフォーマンスがわずかに低下します (少なくとも ROWID にインデックスがあり、大幅な高速化を得るにはカテゴリ ID にインデックスが必要です)。データサイズ自体はわずかです。

ただし、トランザクションのオーバーヘッド (たとえば、 へのすべての呼び出し) によって完全に小さくなっていると思いますfsync()。SQLite は、同時書き込みの負荷が高い場合はひどいものです。

クエリよりも挿入を行う場合は、データ構造を再考することをお勧めします。

于 2011-10-08T02:43:53.297 に答える