[Seasar-user:20040] SQLファイル引数で、IN句を使用時のレスポンス低下

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2010年 8月 5日 (木) 10:40:21 JST


お世話になります。平賀です。

現在、Seasar2を使ってアプリ開発をしているのですが、
以下の事象が発生してしまいました。

原因・解決方法をご存知の方がいらっしゃいましたら、
ご教示いただけないでしょうか。

よろしくお願いいたします。


■事象

  SQLファイルを使用し、実行している2つのSQLについて
  実際実行されているSQLは全く同じであるにも関わらず
  SQLファイルへ渡す引数のIN句の使用方法が異なるだけで
  レスポンスが大きく違っている。

  【方法1】配列を使用      :約20秒
  【方法2】文字列を使用    :約10秒

  ※実行されているSQL文とレスポンスは、「SQL 」で計測しています。


■詳細(2つの使用方法の説明)

  1.配列を使用するタイプ

    Where句内の条件
    /*IF cond.プロパティーb != null*/
      AND カラムA IN /*cond.プロパティーb*/('10','20','30')
    /*END*/

    cond.プロパティーb はString[] 配列

    (実際のSQL) AND カラムA IN ('10','20','30')


  2.文字列を使用するタイプ

    Where句内の条件
    /*IF cond.プロパティーb != null*/
      AND カラムA IN /*$cond.プロパティーb*/
     /*END*/

    cond.プロパティーb はString
    ※Java側でIN句を生成する

    (実際のSQL) AND カラムA IN ('10','20','30')


■環境
    JDK1.6
    Tomcat6.0
    SQLServer 2005 SP2


■質問
    配列を使用してIN句を生成したいのですが
    レスポンスを上げる方法はありませんでしょうか?



Seasar-user メーリングリストの案内