
SQLのSELECT文に
*(ワイルドカード)を使うのはあまりよろしくないと
http://oshiete.goo.ne.jp/qa/6276536.html
で掲載されています。
基本的に ”使う分だけ”
カラムを一個一個指定していくのが定石でしょうか。
使いたいカラムが増えたら、その都度SELECT文にも項目を
足していくのでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
DBMSの持つ重要な要素の一つが、「データの独立性」です。
これは、DBの定義変更があっても、その変更部分を直接操作しないアプリは、変更する必要がないというものです。この意味は、DB操作だけでなく、直接ファイル操作するようなアプリを数多く開発した経験がある人なら、その重要性が分かるでしょう。
RDBMS登場以前の階層型DBMS、ネットワーク型DBMS、それらの国際標準規格準拠の構造型DBMSでは、DDLで吸収していました。
RDBMSでは、これをさらに「データ受け渡しする列を、事前に定義系SQLで定義せず、操作系SQLで決められる」という特長を持ちました。
RDBMSでの実装の上で問題になっているのが、「データ受け渡しする列数が多くなると、極端に性能劣化してしまう」ということです。
大規模システムではこのオーバヘッドは非常に影響が大きく、いくつかのRDBMSでは、この解決手段として、「固定長の列だけで表を構成した場合、性能向上を図れる」、あるいはこれとの組み合わせなどで、「表の定義順で全列を受け渡しする場合、列数が増えても一定の性能を出せる」といった性能対策を実装しているものもあります。
MySQLでも、固定長の列だけで表を構成した場合、性能向上を図れるといった性能対策を行っています。
これらのことから、「実際に操作する必要最小限の列だけを、明示的に指定する」といったことが推奨される大きな要因になっています。
詳細な回答ありがとうございます。
リレーションするかどうか、
このカラムを使うかどうかを
事前に定義しないゆえに
SELECT文等の操作側でひとつひとつ
SQL自身が判断しなくてはならず
重くなってしまうということですね。
カラムを事前指定したほうがいい理由がよくわかりました。
No.1
- 回答日時:
私はケースバイケースだと思ってます。
そのテーブルにあるカラムのデータ全てが欲しいのであれば * でもいいと思います。
ほんの一部のデータしか欲しくないのであれば、カラム名を指定して絞り込む方がスピードが上がるしメモリの使用量も少なくて済みます。
また、プログラム側で取り出したデータを処理する時、カラムの名称を指定してデータが取り出せるのであれば * でも問題ありませんが、1つ目のカラムのデータといった形の番号指定で取り出す場合、何番目にどのカラムの値が入っているのか分かりませんから、ちゃんと取り出したい順番を指定する意味でカラム名を書くのがいいでしょう。
回答ありがとうございます。
たしかにカラム指定するとスピードが上がりました。
ただ、最低限かならず使うカラムというのがあり
毎度毎度DB読み込みの度に書くのは手間なので
SELECT文の一部を変数にするとか
関数化するとかして、対応したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SELECT文で、指定カラム以外の...
-
一部のカラムでdistinctし全て...
-
SQLでカラムを追加し、条件に合...
-
MYSQLで全てのカラムから検索す...
-
DB2のBLOB型カラムに格納された...
-
MySQLで論理名を取得する方法
-
特殊な選択をWHEREで選択するに...
-
mySQL文でわかりません。
-
重複を除いた結果が欲しい
-
UNIONする際、片方テーブルしか...
-
DBのnullになっているレコード...
-
MySQL Null
-
AUTO_INCREMENTの空きデータ
-
生年月日から年代を検索
-
カラムをコピーして、新規カラ...
-
betweenで境界値が取得できない。
-
GREATESTで NULLをスルーする方...
-
IDENTITYを設定
-
エクセルかワードで家系図を作...
-
ドロップダウンリストの連動し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SELECT文で、指定カラム以外の...
-
一部のカラムでdistinctし全て...
-
UNIONする際、片方テーブルしか...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
SQLでカラムを追加し、条件に合...
-
AUTO_INCREMENTに0はダメ?
-
now()かCURRENT_TIMESTAMPか
-
ドロップダウンリストの連動し...
-
カラムをコピーして、新規カラ...
-
MySQLで論理名を取得する方法
-
カラムとコラムの使い分け
-
sql , insert で空行(全ての列...
-
MySQLで先頭にカラムを追加
-
ROUND関数で、四捨五入ができな...
-
DBエラーの意味
-
【SQL】select に ワイルドカー...
-
頭に0が付く文字
-
Select文で結合した時に、重複...
-
日付を一括UPDATE
おすすめ情報