2011-01-03 11 views
11

MySQLテーブルから列を選択すると、列を選択する順序がテーブル内の順序(列をカバーする可能性のあるインデックスを考慮しない)と比較してパフォーマンスに影響しますか?クエリの列の順序は重要ですか?

たとえば、uid、name、bdayという行を持つテーブルがあり、次のクエリがあります。

SELECT uid, name, bday FROM table 

MySQLは次のクエリをどのように表示するのでしょうか。

SELECT uid, bday, name FROM table 

答えて

7

実際の注文は問題ではありませんが、ご希望の場合は自由に注文できます。

編集:私は知っている限り、任意のクエリを最適化するプロセスは、行データのどのサブセットがプルされているかを正確に判断する前に発生します。したがって、クエリオプティマイザは、最初に調べるテーブル、実行する結合、使用するインデックス、適用する集計などに分解し、そのデータセットを取得します。列の順序付けは、データのプルと結果セットの形成の間に行われるため、データは実際にはデータベースによって注文されて「到着」し、アプリケーションに戻されるときに並べ替えられます。

2

実際には、おそらくそれは疑わしい。

まともなクエリオプティマイザを使用してはいけません。

あなたのケースについては、測定することによってのみ伝えることができます。また、データの分布がデータベース内で変化すると、測定値も変化する可能性があります。

に関して

Wazzy

0

で選択された属性の順序は無視できます。基礎となるストレージエンジンは確実に属性の場所を順序付けしますが、ほとんどの場合、メタデータだけの表の記述とは独立している可能性があります(名前の変更、表の変更、行と列のストア)とにかく結果セットへの提示の順序は、測定可能なオーバーヘッドの点で重要ではない。

関連する問題