Re: 埋め込みSQLを使用した時の表示速度について
atushi
居住地: 長野県
投稿数: 30
NSMG様、こんにちは
◎オンラインのSQLコマンドの場合
私は、オラクルでの経験ですが、オンライン画面での
埋め込みSQLは、レコード件数が多い場合は、
特におすすめできないと思います。
<理由>
・オンライン画面では、SQLコマンドの結果データベースに
独自の名前でコピーされるので、件数が多いほど時間がかかる。
・データベースと結果データベースを同じにすれば、件数が多い
場合良いとマニュアルにあるが、MAGICを終了する
(セッション終了)まで、オープンカーソルが蓄積してしまい、
1日稼働すると、カーソルオーバーエラーでMAGICが落ちる。
そしてデータベース上に独自の名前のテーブルが残ってしまう。
データベースの最大オープンカーソル数を増やせば、一時的に
は良いが、本当の解決にはならないと思われる。
・上記の問題があるので、結果データベースを
[Pervasive]や[memory]等にするのが良いが、
結果データベースに多くの件数をコピーするので遅い。
Pervasiveは、[monitor]にて作成状況を確認できる。
よってレコード件数が少なくなるように、WHERE句などで
抽出するしか対処ができなくなってしまう。
・通常と比べて、オンライン画面が作成しにくい。
<対応策:SQLコマンド→データベースビュー>
・SQLコマンドを元に、データベースビューを作成して、
MAGICのテーブルに定義取得して、タイプをセットして
重複不可の仮想キーを必ず1つ追加して、PGで
メインテーブルとして使用する。
オンライン画面も通常通り、作りやすくなります。
<以下追記しました。:発言の編集機能にて>
・やりたい事が、内部結合や左外部結合だけであれば、
データベースビューを作成しなくてもできます。
メインテーブルを定義して、結合リンクや外部リンクで、
実現できます。(SUMなどの集計は、無理ですが。)
並べ替えで、結合テーブルの項目があってテーブルのキーで
定義できないときは、ソートテーブルにてデータベースソート。
抽出は[DB SQL]で、WHERE句の記述を入れます。
---------------------------------------------------
◎バッチのSQLコマンドの場合(補足)
バッチのSQLコマンドは、私がテストしたときには、
結果データベースを設定しても、結果データベースへ
コピーはされなかったので、速度的に問題はなかった。
当たり前ですが、データベースビューにしても問題なかった。
リファレンス(ref9Plus.pdf)が一番詳しく書いてあるが、
SQLコマンドで、オンライン画面表示するときは、
結果データベースに出力されるみたいです。
---------------------------------------------------
◎オンラインのSQLコマンドの場合
私は、オラクルでの経験ですが、オンライン画面での
埋め込みSQLは、レコード件数が多い場合は、
特におすすめできないと思います。
<理由>
・オンライン画面では、SQLコマンドの結果データベースに
独自の名前でコピーされるので、件数が多いほど時間がかかる。
・データベースと結果データベースを同じにすれば、件数が多い
場合良いとマニュアルにあるが、MAGICを終了する
(セッション終了)まで、オープンカーソルが蓄積してしまい、
1日稼働すると、カーソルオーバーエラーでMAGICが落ちる。
そしてデータベース上に独自の名前のテーブルが残ってしまう。
データベースの最大オープンカーソル数を増やせば、一時的に
は良いが、本当の解決にはならないと思われる。
・上記の問題があるので、結果データベースを
[Pervasive]や[memory]等にするのが良いが、
結果データベースに多くの件数をコピーするので遅い。
Pervasiveは、[monitor]にて作成状況を確認できる。
よってレコード件数が少なくなるように、WHERE句などで
抽出するしか対処ができなくなってしまう。
・通常と比べて、オンライン画面が作成しにくい。
<対応策:SQLコマンド→データベースビュー>
・SQLコマンドを元に、データベースビューを作成して、
MAGICのテーブルに定義取得して、タイプをセットして
重複不可の仮想キーを必ず1つ追加して、PGで
メインテーブルとして使用する。
オンライン画面も通常通り、作りやすくなります。
<以下追記しました。:発言の編集機能にて>
・やりたい事が、内部結合や左外部結合だけであれば、
データベースビューを作成しなくてもできます。
メインテーブルを定義して、結合リンクや外部リンクで、
実現できます。(SUMなどの集計は、無理ですが。)
並べ替えで、結合テーブルの項目があってテーブルのキーで
定義できないときは、ソートテーブルにてデータベースソート。
抽出は[DB SQL]で、WHERE句の記述を入れます。
---------------------------------------------------
◎バッチのSQLコマンドの場合(補足)
バッチのSQLコマンドは、私がテストしたときには、
結果データベースを設定しても、結果データベースへ
コピーはされなかったので、速度的に問題はなかった。
当たり前ですが、データベースビューにしても問題なかった。
リファレンス(ref9Plus.pdf)が一番詳しく書いてあるが、
SQLコマンドで、オンライン画面表示するときは、
結果データベースに出力されるみたいです。
---------------------------------------------------
投票数:1
平均点:10.00
投稿ツリー
-
埋め込みSQLを使用した時の表示速度について
(NSMG, 2007-5-8 12:07)
- Re: 埋め込みSQLを使用した時の表示速度について (nkmt, 2007-5-8 16:44)
-
Re: 埋め込みSQLを使用した時の表示速度について
(atushi, 2007-5-8 21:26)
- Re: 埋め込みSQLを使用した時の表示速度について (NSMG, 2007-5-10 11:43)