0

MySQL で中規模 (100,000 エントリ) のテーブルを構築しており、速度を最適化しようとしています。エントリには、本質的にトランザクションのデータが含まれており、このデータは明らかに MySQL に保持されます。データの残りの部分は、テーブルの存続期間にわたって変更されず、テーブル形式にも適していません (つまり、一部のエントリには他のエントリに含まれないフィールドが含まれ、多くの「null」値が発生します)。さらに、この 2 番目の部分のデータの多くは繰り返されます。つまり、500 ~ 1000 の一意のデータ セットしか存在しない可能性があり、テーブル内のエントリとペアになります。

私は、データを整理する 3 つの方法を考えています。1) MySQL のすべてのデータをテーブル形式のままにします。2) 一意でないデータをシリアル化し、そのデータを単一の MySQL フィールドに保存します。3) 一意でないデータをシリアル化し、MySQL テーブル内のポインタによって参照されるハードディスク内のファイルに保存します。

私の質問は、どの形式をお勧めしますか?その理由は? データベースで多くのクエリを実行することを考えると、どちらが最速でしょうか?

4

3 に答える 3

0

正規化されたデータベースについて説明しているようです。これは非常に標準的です。「より大きな」エンティティは、ID を持つ単一のテーブルになります。

より大量のデータについてはid、外部キーと呼ばれるそれへの参照があります。これは、リレーショナル データベースが設計された構造です。「リレーショナル」の意味の一部は、エンティティ間の関係です。

数十の列しかない場合、一部の値が一部の行で NULL になり、他の値が他の行で NULL になることを心配する必要はありません。複数の種類のエンティティがある場合は、これをデータ構造に反映することもできます。

編集:

正規化は、パフォーマンスに良い影響と悪い影響の両方をもたらす可能性があります。データのサイズが縮小された場合、多くの場合、非正規化されたデータよりもパフォーマンスが向上します。適切なインデックス構造があれば、通常、正規化されたデータ構造はうまく機能します。

于 2013-08-18T20:26:53.160 に答える