1

複数の列を持つテーブルがあるとします。以下のように、すべての列を選択するのと、列のサブセットだけを選択するのとでは、速度に違いはありますか?

SELECT * FROM Table WHERE colX = "value"
SELECT col1, col2, col3 FROM Table WHERE colX = "value"
4

2 に答える 2

2

すべての列が必要でない限り、すべての列を選択しないでください。代わりに、必要な列ごとに tablename.columname を入力するだけで、必要なものだけを選択する必要があります。

于 2013-02-08T14:44:33.893 に答える
1

生のテーブルから、実際のクエリ自体には同じ時間がかかります。ただし、返される結果は異なります。そして、このような単純なクエリの場合、これが時間の大半を占める可能性があります。

テーブルに非常に大きな列が含まれている場合、レコードは複数のページにまたがり (「オーバーフロー」ページ)、パフォーマンスに違いが生じる可能性があります。すべてのオーバーフロー ページが一度にメモリに読み込まれるとは思いません。そのため、大きな列を含まない列のサブセットのみを明示的に参照する方が高速な場合があります。これが MySQL でどのように処理されるかは、使用されているファイル システムによっても異なる場合があります。

ただし、「テーブル」が実際にビューである場合、大きな影響を与える可能性があります。また、一部のデータベースは、計算列/計算列をサポートしています。これらが存在する場合、パフォーマンスに影響を与える可能性があります。

また、一部のデータベースは「列」指向であり、列は実際には別々に格納されます。このようなデータベースでは、これらのバージョンのクエリ間でパフォーマンスに大きな違いが生じる可能性があります。

于 2013-02-08T14:44:00.867 に答える