ハロの外部記憶インターフェイス

そろそろ覚える努力が必要かも…

SQL ServerのManagement Studioでは早いがアプリケーションで実行すると遅くなる

Management Studioでのクエリ実行とPGの中での実行の違い

主に遅い原因は実行プランの違い、問題はなぜ違いが発生するかだが、原因としてManagement Studioでの実行とPGでの実行ではPGで頻繁に実行されるとSQLが再利用される。実行プランも再利用されるため、データによっては遅くなる場合がある。(らしい)

  • ARITHABORTがManagement StudioではデフォルトONだが、PG実行時はデフォルトOFFになっている。

PGのSQL実行時に意図的にONにしてあげると、早くなる場合あり。(効果なしの場合も多い)

SET ARITHABORT ON
-- 実行SQL 
SET ARITHABORT OFF

SQL文のエンコーディング問題

PGからSBサーバーへ送られるクエリのエンコーディングによっては以下の問題が発生しているみたい。varcharのほうが圧倒的多いはずだし、なんとかMSが頑張ってほしいな

  • SQL ServerではvarcharがSJIS、nvarcharがUnicode扱い
  • SQLがnvarcharとして実行されてた場合、varcharカラムに対して暗黙的にキャストが行われるらしい