C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: SQLカラム数について


(過去ログ 20 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■8602 / inTopicNo.1)  SQLカラム数について
  
□投稿者/ しん (1回)-(2007/10/03(Wed) 20:11:51)

分類:[データベース全般] 

SQLでの質問

現在稼働中のものなんですがデータがって稼動しているためデータベースの作りなど根本的に変えることは出来ないと思います。
そこで質問ですが 例えば 顧客情報がありとりあえずテーブルはいくつかに分かれているんですが、顧客の一番基本となるページがカラムが70近くあります。
そこにデータが入っているためそれを私用するしかないのですが、
例えば
SELECT * from customer などだと確実に読み込む速度が遅くなると思います。これを必要なカラムの
select aaa,bbb from customer など必要に応じてカラムを出すのが普通だと思いますが、これで出すとカラム70あるうち残りの68個は見ていないことになりカラムの
数は関係ない速度がきちんとでるんでしょうか?
初心者なものでいまいち分からないのですが、教えてください

お願いいたします
引用返信 編集キー/
■8608 / inTopicNo.2)  Re[1]: SQLカラム数について
□投稿者/ はつね (282回)-(2007/10/03(Wed) 21:52:56)
はつね さんの Web サイト
No8602 (しん さん) に返信
> SELECT * from customer などだと確実に読み込む速度が遅くなると思います。これを必要なカラムの

SELECT * としたときと必要なカラムを指定したときでは、確かに1レコードに含まれるデータ量は異なるでしょう。
しかし、ディスクからデータを読むときには物理的には指定したカラムだけを読むのではなくDBの各種設定に基づいたサイズで読みます。
よって、このサイズを超えるか超えないかで読み込む速度が遅くなるかどうかが決まります。
また、読み込んだレコードは大抵DB側のバッファに貯められます。このバッファにどれくらいいられるかにも影響するでしょう。当然、読み込んだサイズが小さければバッファにいられる期間も長くなる確率が高くなりますので、再読込がディスクではなくバッファとなって速度が向上する可能性も高くなります。

以上のようにあくまでも可能性であって「確実に読み込む速度が遅くなる」とは言い切れません。

一方、DBからクライアントに送られてくるデータは、確実にカラムを指定したときの方が小さくなりますから、ここは確実に早くなります。
しかし、ネットワークも最小転送サイズというものが存在しますので、そのサイズを超えるかどうかによって速度が向上するかどうかも決まります。

要は、そのような確率、可能性は高くなりますが、「確実に」と言い切れるほど単純なものではありません。
# 項目指定するのに余計な事前処理とかがありそっちの方が遅くなるとか、SELECT文が長くなって結局ネットワーク転送に消費する時間が変わらないとかもある

引用返信 編集キー/
■8612 / inTopicNo.3)  Re[2]: SQLカラム数について
□投稿者/ 中博俊 (1185回)-(2007/10/04(Thu) 00:00:03)
中博俊 さんの Web サイト
DBMSが何かはわからないんですが、そのカラムが全てインデックスか、インデックスのバインド列に指定されているとインデックスサーチだけで終わってくれるとおもいますので(Selectだけでなく、Whereなど関係するカラムが全て入っている必要があり)、+の方向に左右する可能性はありますね。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -