3

背景: 約 100 万行の中古車を多数保持する cars というテーブルがあります。テーブルには 170 を少し超える列があります。テーブルは、個々の列のみにインデックスが付けられます。ほとんどの列はブール値 (has_automatic_gearbox など) で、残りは文字列と数値 (色や価格など) です。車はビューに表示され、合計 170 列のうち約 80 列を使用しています。

私の質問: 私の質問は、検索を行うときにテーブルから 80 列のみを選択するか、または一方で、80 列のみで構成される新しいテーブルを作成するかによって、パフォーマンスに違いが生じるかどうかです。合計 170 列の代わりに必要ですか? 言い換えれば、テーブルが選択されていない列を保持することは、パフォーマンスに違いをもたらすでしょうか?

4

3 に答える 3

2

また、dba.SE に関する同様の質問への回答を読むこともできます。

Do the number of columns in a particular table affect the performance
of a query, when querying on a subset of that table?

要するに、そうです。選択されていない列は通常、選択されている列と同じディスク ブロックに存在するため、とにかく読み取られます。

于 2012-09-27T16:37:37.063 に答える
0

1E6車の属性のほとんどは、おそらく{brand、model、make、model_version}などの隠れた要因に依存します。これらの属性を別のテーブルにまとめて、メインの車のテーブルでそのテーブルを参照することができます。最終的なケースでは、メインの車のテーブルには、車のモデルの特定のインスタンスに属する属性のみが含まれます(例:{number、price、build_date、buy_date、(多分)colour})。

于 2012-09-26T14:37:12.237 に答える