select で*(アスタリスク)を使ってはだめ?
普通にSQLを文を実行するときは、 *使います。
以下みたいな感じに。
SQL> select * from user_tables;
でも、コード上から実行する際は、*指定してはダメみたいです。
まあ、最低辺なので詳しい話はよくわかりませんが、
何か大きなデータが含まれていると処理が重くなって困るからでしょうか?
最近は、でかいデータをいれるBLOB型なんていうのもあるようですしね。
ということでちゃんとカラム指定してとる方が良いみたいです。
SQL> select id,name,group from user_tables;
ディスカッション
コメント一覧
はじめまして。小心者のSEです。
私も同じ注意をされた経験があります。
理由は、WEBの検索ページや、データ量の多いテーブルを抽出するときにレスポンス悪化するからだそうです。
別の理由として、例えば同じフィールド名Fをもつ2つのテーブルAとBを結合してselectした場合、* だと、データを抽出したプログラム側でテーブルAのフィールドFを取り出したいときに、record("F") のようにテーブル名を頭に付けなかったらデータベースエラーが発生することがあるからです。
一方はテーブルAが欲しいと思っていても、他方が * でSQLを作ってしまうと、エラーの原因はどっちの人が悪いの?ということにもなりかねません。会社間で分業してたら、発注側の一声で、受注側が悪者にされちゃいます(笑)
小生のような底辺のブログにコメント頂きましてありがとうございます。
>例えば同じフィールド名Fをもつ2つのテーブルAとBを結合してselectした場合、* だと、データを抽出したプロ
>グラム側でテーブルAのフィールドFを取り出したいときに、record("F") のようにテーブル名を頭に付けなかった>らデータベースエラーが発生することがあるからです。
なるほど、そういう理由もあるんですね。ありがとうございます。勉強になります。
(あっ。最底辺なのでちゃんとはわかっていないですよ。DBは完全素人レベルでして結合もほとんど使ったことないです。)
そうです。
プログラムの中から実行する時には、SELECT * は使ってはいけません。
理由は色々あるみたいですが、* を指定するとそのテーブル内の全てのカラムを取得してしまうことになります。つまり、必要のない余計なカラムまで取得してしまうからです。
SELECT 文を発行するときには、常に欲しいカラム名を明示的に指定することが常道です。
> そうです。
> プログラムの中から実行する時には、SELECT * は使ってはいけません。
>
> 理由は色々あるみたいですが、* を指定するとそのテーブル内の全てのカラムを取得してしまうことになります。つまり、必要のない余計なカラムまで取得してしまうからです。
> SELECT 文を発行するときには、常に欲しいカラム名を明示的に指定することが常道です。
コメントありがとうございます。こういうことは、なんとなくではなく、ちゃんと理由を知っておくと
いいですよね。まあ、使わないと直ぐに忘れてしまうのですが。。。