適切に設計されたクエリは、数百万行の適切にインデックス付けされたテーブルに対して簡単にクエリを実行でき、クエリ結果が非常に高速です。カテゴリごとに異なるテーブルを用意する必要はありません。
フィルター、並べ替え、または結合する列のテーブルに適切なインデックスがあること、およびクエリを作成するときにインデックスを利用することを確認する必要があります (つまり、インデックス付きフィールドでのみフィルター、並べ替え、または結合し、また、インデックスの使用を禁止するテーブルから派生した値に対してクエリや並べ替えを行っていないことを確認してください)。また、インデックスがメモリに完全に常駐できるように、十分なメモリが割り当てられていることを確認する必要があります。
一般に、スキーマは常にできるだけ単純に保つ必要があります。
- 同じプロパティを持つオブジェクトに対して別のテーブルを作成しないでください
- オブジェクトに直接関連するオブジェクトの属性のみをテーブルに追加します (つまり、正規化します)。
- 適切な外部キー (1 対多の関係の場合) または結合テーブル (多対多の関係) を使用して、オブジェクト間の関係を表現します。
- 適切なフィールド タイプを使用して、保存する必要があるデータを保存します (たとえば、整数のタイムスタンプや varchar の代わりに、日付には日付/日時フィールドを使用します)。