sql >> データベース >  >> RDS >> Mysql

すべての列を選択するとパフォーマンスが低下しますか?

    ここでの問題は、ネットワーク通信だけでなく、データベースサーバーの問題ではありません。すべての列を一度に選択することで、サーバーに、すべての列を一度に戻るように指示します。 IOとそのすべてに関する懸念については、@ Karambaがコメントで与えた質問と回答でうまく対処されています: select * vs select column 。しかし、ほとんどの実際のアプリケーション(そして私はあらゆる意味で「アプリケーション」を使用します)の場合、主な関心事はネットワークトラフィックと、データのシリアル化、送信、および逆シリアル化にかかる時間です。実際には、答えはどちらの方法でも同じです。

    したがって、すべての列を使用する場合は、すべての列を引き戻すのは素晴らしいことですが、特に長い文字列を列に格納する場合は、余分なデータ転送が多くなる可能性があります。もちろん、多くの場合、違いは検出できず、ほとんどの場合、原則の問題です。すべてではありませんが、かなりの大多数です。

    これは、実際には、前述の怠惰(そして私を信じてください、私たちは皆そのように感じています)とパフォーマンスがどれほど重要であるかの間のトレードオフにすぎません です。

    そうは言っても、やる すべての列の値を使用するつもりである場合は、一度にすべての値をプルバックしてから、一連のクエリを提出する方がはるかに優れています。

    Web検索を行うようなものと考えてください。検索を実行し、ページを見つけて、必要な詳細は1つだけです。ページ全体を読んで主題についてすべてを知ることも、探していることについての部分にジャンプして実行することもできます。後者は、それがあなたが望むすべてである場合ははるかに高速ですが、他の側面について学ぶ必要がある場合は、もう一度検索して見つけるよりも、最初にそれらを読む方がはるかに良いでしょう。それについて話すサイト。

    将来、他の列の値が必要になるかどうかわからない場合は、開発者としてそれを行う必要があります。その場合は、その可能性が高くなります。

    それはすべて、アプリケーションが何であるか、データが何であるか、それをどのように使用しているか、そしてパフォーマンスがどれほど重要かによって異なります。



    1. SQLコマンドが正しく終了していませんか?

    2. 1つのクエリでmysqlの選択、更新、削除を実行できますか?

    3. RailsとPostgreSQLを使用してオカレンスを含むグループ化されたリストを返します

    4. MysqlGroup24時間間隔