- Home >性能改善関連 >dbSheet側の設定による性能改善方法 >DB管理ツール上で数秒の処理が、dbSheetで数分かかります。改善方法を教えてください。
Q. DB管理ツール上で数秒の処理が、dbSheetで数分かかります。改善方法を教えてください。
考えられる要因
次のような要因が考えられます。
1)クリア処理を2重に行っている。
2)メモリー不足になっている。
3)コピー処理に時間がかかっている。
4)SQL文の実行に時間が掛かっている。
5)セル単位で処理している。
6)[10200;テーブル更新]に時間が掛かっている。
7)主キーの型変換処理が発生している。
対処方法
各要因に対する対処方法を解説します。
1)クリア処理を2重に行っている。
[10100:SQL実行]や[10110:SQL展開]の前でタスクでクリアを行っている場合は、
[シート出力] タブの「展開範囲情報」にある「□ 展開時にセル範囲のクリアを行わない」に
チェックを入れるようにします。
タスクのタスクの内部処理で行っているクリア処理を抑止することで、クリア処理を一度だけ
実行するようにします。
《SQL実行の場合》

2)メモリー不足になっている。
メモリー不足の解消用に、dbSheetではタスクを3つ用意してあります。
①[11200:読込済みクエリー解放]タスク
大量のレコードをSQL実行で読み込むには、多くのメモリーを必要とします。
そのような場合は、SQL実行の前に[読込クエリー解放]を実行して、メモリーを解放します。

②[64101:Excelメモリー解放]タスク
SQL実行によるデータの展開処理やコピー処理、クリア処理などを繰り返していると、
Excelが メモリーを消費して、Excelのレスポンスが徐々に重くなります。
このような場合に[Excelメモリー解放]を行うと、レスポンスが良くなるケースがあります。

③[62202:ブックを閉じる]タスク
複数のブックをメニュー等で切り替えたり、参照ブックで開いた時などは、
処理中以外のブックを閉じると、閉じたブックが使用していたメモリーを解放することができます。

3)コピー処理に時間がかかっている。
[50200:コピー]の「コピー形式」では、[すべて]が最も速く、[値]、[数式]、[書式]と
遅くなり、 [書式・コメント・入力規則・列幅]が最も遅くなります。
なるべく、書式のコピーを使わない方が速くなります。

4)SQL文の実行に時間が掛かっている。
SQL文の中でも、SELECT文のORDER BY 句は時間がかかる処理です。
ORDER BY を外した時に SQL文が高速になる場合は、事前に VIEW を作成したり、
いったん ワークテーブルにデータを落とした後に SELECT するとレスポンスが上がることがあります。
5)セル単位で処理している。
セル単位で、コピーやクリア、セル保護を行うと、セルの個数に比例して処理時間がかかります。
このような場合、範囲指定で行うことで、レスポンスが上がります。
チップス集Ⅱの「⑦高度なマクロの利用」にサンプルがあります。
※チップス集は開発版のオンラインヘルプからダウンロード可能です。

6)[10200;テーブル更新]に時間が掛かっている。
開発版[DB設定]にある「更新バッチサイズ」の値を大きくすることで、
パフォーマンスを改善することができます。

1回の通信で処理できるレコード数を指定します。
デフォルト値は「1」です。 特に以下のようなケースで効果を発揮します。
イ)dbSheetサーバーとDBサーバーが別立て
ロ)一度の更新レコード件数が多い
7)主キーの型変換処理が発生している。
SQLパラメータのデータ型[文字列]は、nvarchar 型の扱いになります。
たとえば、 テーブルのキー項目の型が varchar 型だった場合は、DB側で暗黙の型変換が行われ、
主キーが使用されず全件検索となるため、時間がかかるようになります。

対処方法としては、SELECT文の前に Declare でvarchar型の変数を宣言して、その変数に
SQLパラメータの値を代入するようにします。
そして、Declare で宣言した変数を使って条件検索 するようにします。

オンラインヘルプの改善にご協力ください。
このページは役に立ちましたか?