0

次に例を示します。

表 1 -列 A -列 B

質問:

違いは何ですか

SELECT * FROM Table1

SELECT columnA, columnB FROM Table1

これら 2 つのクエリが同じ結果を返すことはわかっています。しかし、違いはありますか、それともこれら 2 つのクエリはまったく同じことを行いますか?

さらに、MySQL サーバーはそれらをどのように処理しますか?

誰かがこれに関するドキュメントを指摘できますか?

ありがとうございました!

セバスチャン

4

5 に答える 5

4

違いはありません。柱の射影の問題です。

を使用する場合*、列名を制御することはできません。テーブル内のすべての列を選択するだけです。

私自身の意見では、列名を指定する方がより柔軟な場合がありますが、列名を指定できalias、関数に渡すなど、列でいくつかのアクションを実行できるためです。

于 2013-04-05T12:35:31.183 に答える
0

列を具体的に選択し、後で列を追加、削除、または名前を変更してテーブルの構造を変更した場合、それらを機能させるためにクエリを編集する必要があります (または、列を追加する場合は、追加データ)。選択する*と、それらの列が何であるかに関係なくすべての列が読み込まれるため、後でテーブル構造が更新された場合でも、クエリは完全に機能します。

ただし、クエリに結合を含めることを意図している場合は、テーブル名の前に を付ける必要があり*、両方のテーブルに同じ名前の列がある場合、列名が衝突するリスクがあります。したがって、結合されたクエリの場合、あるテーブルから個々の列を選択し、他のテーブルから個々の列を選択するのではなく、各テーブルから個々の列を選択することを常にお勧めします*

個々の列を選択すると、エイリアスを使用して列の名前を変更することもできます。

SELECT column_1 AS first, column_2 AS second
FROM some_table
于 2013-04-05T12:40:02.353 に答える
0

原則として「SELECT *」は避けてください。それは邪悪で遅く、数か月後に戻ったときにコードが読みにくくなります。代わりに、列に名前を付けて修飾します。テーブルインスタンスにエイリアスを付けます(必要に応じて列も)...

SELECT x.something, y.something_else FROM my_table x JOIN my_other_table y ON y.id = x.id

SOに関する私の他の回答の多くを見ると、私が常にこのアドバイスに耳を傾けているとは限らないことがわかりますが、それでも良いアドバイスです!

于 2013-04-05T12:40:13.087 に答える
0

違いは次のとおりです。

select count(*) from table, count all registers on that table,

非常に似ている

select count(1) from table, count all registers on that table

select count(column_name) from table, 

column_name が null でないテーブルのすべてのレジスタを数えます

于 2013-04-05T12:39:21.053 に答える