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」である場合、遅延発生しない