PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
10432 00/02/23 17:28:15 RE(9):PB6.5: \"DisableBind=1\"を使用するケース By Kasi
10415 00/02/22 18:30:46 RE(8):PB6.5: \"DisableBind=1\"を使用するケース By M.M
10410 00/02/22 17:40:10 RE(7):PB6.5: \"DisableBind=1\"を使用するケース By Mika★
10408 00/02/22 18:06:49 RE(6):PB6.5: \"DisableBind=1\"を使用するケース By こてちゅ
10403 00/02/22 16:41:25 RE(5):PB6.5: \"DisableBind=1\"を使用するケース By M.M
10394 00/02/22 14:08:13 RE(4):PB6.5: By スナフキン将軍
10393 00/02/22 13:43:59 RE(3):PB6.5: Update文のwhere句について By Mika★
10392 00/02/22 12:40:13 RE(2):PB6.5: Update文のwhere句について By スナフキン将軍
10388 00/02/22 11:15:33 RE(1):PB6.5: Update文のwhere句について By こてちゅ
10384 00/02/22 10:32:30 PB6.5: Update文のwhere句について By スナフキン将軍

カテゴリ:データウィンドウ
日付:2000年02月22日 18:30 発信者:M.M
題名:RE(8):PB6.5: \"DisableBind=1\"を使用するケース

こてちゅさん、Mika★さん、こんばんは。

こてちゅさん:
>バインド変数を使ったほうがレスポンスが早いのは、
>Oracleのパフォーマンスチューニングの例にもあったかと思います。

原則論としてはそうです。しかしそうでないケースがあるのですよ。
ヘルプ見ていて、ようやく思い出してきた。


Mika★さん
>その辺は、ちょっとうろ覚えなのですが
>Oracleは、1度発行したSQL文はキャッシュに入り
>キャッシュに保存されてる間は、全く同じSQL文(大文字小文字なども区別します。)を発行するときに
>少し実行が早くなります。

はい、そのとおりです。しかし、続きがあるのです。

[PB7.0 HELPより抜粋]
|バインド変数を使用する SQL 文を最初に実行する際に、PowerBuilder によって
|以下の順序で処理がされます。
|1 SQL 文を解析します。
|2 SQL SELECT 文に対して適切なデータベース関数を呼び出し、結果集合の情報を取得します。
|3 バインド変数に対してメモリ バッファを割り当てます。
|4 割り当てられたメモリ バッファを解析された SQL 文にバインドします。

|SQL 文をキャッシュすると、解析された SQL 文、結果集合の情報、メモリバッファの割り当て
|とバインド情報が、SQL キャッシュに格納されます。次回以降、このSQL 文を実行すると、
|PowerBuilder がキャッシュからこの SQL 文を見つけるので、前述の処理を繰り返す必要が
|ありません。

同じSQL文を繰り返す場合、バインド変数の効果は絶大です。
しかし、異なるSQL文を続けて発行する場合、1.のSQL文解析でバインド変数を使用していると
わずかですがタイムラグが発生します。

特殊なケースですが、異なるSQL文を続けて発行するとバインド変数を使用しない方が速く
なるのです。

...でも、ベンチマークテストのために用意した特殊な環境で確認した事例ですので、通常の
開発ではそれほど役にはたちませんけどね。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Oracle 8.0
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.