0

重複の可能性:
どちらが速い/最良ですか?SELECT*またはSELECTcolumn1、colum2、column3など

数年前に読んだことを思い出します。MySQLテーブルからすべてを選択したいシナリオでは、怠惰で効率の悪いSELECT *アプローチを使用するよりも、すべての列を指定する方が効率的でより良い方法でした。

私はこれの証拠をオンラインで見つけるのに苦労しているので、それが新しいバージョンのMySQLとPHPに適用されるかどうかはわかりません。

SELECTを使用するよりも、私のすべての列を指定する方がよいでしょうSELECT *か?

SELECT * FROM golf_course WHERE id = 2;
4

3 に答える 3

2

Select *は、データベースが列を検索する必要があるため、本質的に効率が低くなります。さらに、参加が1つでもある場合、特にすべてのクエリでそれを行う場合は、データベースとネットワークのリソースを浪費する不要な繰り返しデータを送信します。最後に、select *は列の順序を指定しないため、誰かが愚かな人が列を別の順序でドロップして再作成した場合、フォームの名の列に社会保障番号が突然表示される可能性があります。報告する。また、どこにも表示したくない列を誰かが追加した場合(たとえば、監査目的や、顧客に見せたくない顧客に関するメモなど)、問題が発生します。さらに、列を追加する場合は、とにかくどこに表示するかを決定する必要があります。そして、なぜそれらをどこにでも喜んで表示させるのではないでしょうか。Select *は、非常に悪いSQLアンチパターンです。

于 2012-06-12T13:36:59.603 に答える
2

はい。

  • クエリが理解しやすくなります
  • 必要な列のみを選択します
  • すべての列を指定すると、不要な列を後で簡単に削除できますが、指定しないで後で実行する場合は、すべての列を入力する必要があります。
  • 後でテーブルに列が追加された場合でも、列を好きなように配置し、コードで参照することができます。
  • 計算、連結を簡単に追加できます
  • もっと

パフォーマンスに関しては、よくわかりません

于 2012-06-12T12:40:20.510 に答える
0

IMHO、を呼び出すとSELECT *、必要なフィールドのみを呼び出すすべてのフィールドを読み取る必要があり、より効率的になります。また、より大きなデータベースをクエリしている場合、パフォーマンスが影響を受ける可能性がありますSELECT *

于 2012-06-12T13:14:35.140 に答える