none
【再度】決まったある引数の時だけアプリケーションレスポンスが悪くなる RRS feed

  • 質問

  • 2009年10月19日に同件で質問がありましたが、再度教えてください。

    わたくしも同様の現象が出て、自力では対応できない状況になっています。

    ①最初の質問では、

    「結局JDBCのドライバがコードを変換する際に時間がかかっていたようで、
    WHERE句のコードをUnicodeコードで検索に行っていたのを、ASCIIコードで行くように変更したところ、
    レスポンスがよくなりました。」

    で解決されていましたが、この現象はどのような理由で発生するのですか。

    同様の対応を実施しようと検討しているのですが、それがBESTなのかわかりません。

    ②「WHERE句のコードをUnicodeコードで検索に行っていたのを、ASCIIコードで行くように変更」するとは、

    具体的にどのように対応したらよいのですか。

    プログラムに記載するのか、DBに設定するのか、調べたのですがわかりませんでした。

    以上、是非ともご教授お願いいたします。

    ◇◇◇◇下記、以前の質問◇◇◇◇

    下記の条件の環境で、特定の引数の時だけ、JDBCを返したJavaのアプリケーション(JDK1.4)が遅延します。
    同じSQLを手で入力した場合には、遅延しません。
    これって、何が悪いのでしょうか?
    他の値でやみくもにすることもできなし、この値の時だけ発生します。
    どなたか、教えて下さい。

    【OS】 WindowsXP Professional
    【DB】  SQLServer 2005 ExpressEdition SP2
    【JDBC】 Microsoft SQL Server 2005 JDBC Driver 1.2

     【発行SQL】
        SELECT
         PXMT0100.TENCD AS TENCD
         ,PXMT0100.PLANCD AS PLANCD
         ,PXMT0100.PLANSYUBETU AS PLANSYUBETU
         ,PXMT0100.PLANNAME AS PLANNAME
         ,PXMT0100.PLANSHORTNM AS PLANSHORTNM
         ,PXMT0100.PLANKANA AS PLANKANA
         ,PXMT0100.PLANTANCD AS PLANTANCD
         ,PXMT0102.TOKUKBN AS TOKUKBN
         ,PXMT0102.TOKUTANKA AS TOKUTANKA
         ,PXMT0102.TOKUGENKA AS TOKUGENKA
         FROM
          PXMT0100
          INNER JOIN PXMT0102
              ON (PXMT0100.SOSIKICD = PXMT0102.SOSIKICD
              AND PXMT0100.TENCD = PXMT0102.TENCD
              AND PXMT0100.PLANCD = PXMT0102.PLANCD
              )
         WHERE
          PXMT0100.SOSIKICD = '0001'
          AND PXMT0100.TENCD IN ('0000', '0001')
          AND PXMT0102.ITEMCD = '?????????????'
          AND PXMT0100.PLANSTARTYMD <= 20090928
          AND PXMT0100.PLANENDYMD >= 20090928
          AND PXMT0100.PLANVALKBN = 1
          AND PXMT0100.DELSTATUS = 0
          AND ((PXMT0102.TOKUKBN = '1'
             AND PXMT0102.STARTYMD <= 20090928
             AND PXMT0102.ENDYMD >= 20090928)
          OR (PXMT0102.TOKUKBN = '2'
             AND PXMT0102.STARTYMD <= 20090928
             AND PXMT0102.STARTHMS <= 161915
             AND PXMT0102.ENDYMD >= 20090928
             AND PXMT0102.ENDHMS >= 161915))
          AND PXMT0102.TOKUVALKBN = 1
          AND PXMT0102.DELSTATUS = 0
         ORDER BY
          TOKUKBN ASC,
          TENCD DESC,
          TOKUTANKA ASC,
          STARTYMD DESC,
          STARTHMS DESC,
          ENDYMD ASC,
          ENDHMS ASC,
          PLANCD DESC


    条件(WHERE句)PXMT0102.ITEMCD = '?????????????'の値に
     ①「4900700007049」である場合、遅延発生する
     ②「4900700007094」である場合、遅延発生しない

    2013年1月28日 6:10