- - PR -
SQL(Oracle)とJDBC(Java)の細かいパフォーマンスの話
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-08-24 11:58
あぶです.
細かい話ですが, 少し気になったのでスレッド作りました. JDBCで検索して値を取り出す際, NUMBER型のフィールドをどこで 文字列に直すのが早いでしょうか. 1. SQLでTO_CHAR関数で変換してからJDBCでgetString()する 2. JDBCでgetInt()してからString.valueOf()で変換する ※ DBサーバとAPサーバの性能は同じと仮定する ・J2SE 1.3 ・Oracle8i Database ・Oracle JDBC Driver |
|
投稿日時: 2006-08-24 12:39
1の方が早いような気がします。
ですが、数値のString化なども含め、私の場合はなるべく2の方式 にするようにしています。理由は、APサーバ側の負荷が上がるように しておけば、APサーバのクラスタ化で改善できるので。Oracleでクラスタ 化すると、ハードも含めてコストが高いので・・・。 |
|
投稿日時: 2006-08-24 14:11
愚問に名答でした.
感服です. |
|
投稿日時: 2006-08-24 14:18
そんな些細な事を気にされるよりも、
ほんの少し効率のよいSQLを書いた方が遥かに効果がありますよ。 型変換の処理なんて実行計画の影響に比べるとないも同じなわけで。 |
|
投稿日時: 2006-08-24 15:12
愚問ではないですよ。
時々お客さんの立場で、開発者にこの手の突っ込みをする ことがあるのですが、 「そう教えられたので」 とか 「何となくそうやってます」 というような話をされる方がいます。なので、いつか同じような 突込みをお客さんにされた時のために、最低でも2通りの答えが 用意できたということですよ。 |
|
投稿日時: 2006-08-24 15:28
小僧さん, どうも.
確かに開発現場では重要な判断ですね. 私が愚問と云ったのは, インフラなどの要件によって, 答えは明確であるのに, > ※ DBサーバとAPサーバの性能は同じと仮定する と書いてしまったことです. # お客さまには, もちろん, # 「○○なインフラ構成なので, △△なコーディング規定とします」 # と伝えます. |
1