[Java lista] MSSQL PreparedStatement
CoL
col at gear.hu
2007. Sze. 21., P, 00:17:08 CEST
Szia,
Dévényi Gábor wrote:
> Sziasztok!
>
> MSSQL-nél futottam bele egy érdekes dologba. A PreparedStatement
> használatánál irreálisan nagy select futási idők jöttek ki.
> Sokszor egymás után indítva a kéréseket a select futási ideje akár 10
> + másodpercig is eltartott a connection kérés/megkapás pedig 20
> másodpercig. Ha ugyanezt a selectet sima Statement-vel hívom meg
> sokszor akkor a select 63 millisecond a connection kérés pedig 100
> millisecond.
> Próbáltam régebbi és legújabb Microsoft JDBC driverekkel, jTDS-vel.
> Az eredmény ugyanaz.
>
olyasmit olvasgattam, hogy az lassithat, ha eseleg eltero tipusu adatok
adodnak at parameter-bol mint az oszlopok tipusa. Peldaul, kuldesz
decimal(x,y)-t az oszlop meg numeric(z). Ilyenkor, hogy tuti legyen,
erdemes ugy query-zni, hogy cast-olni a select-be es a parameter a cast
parametere: cast(? as tipus).
Valamint olyasmit is, hogy sendStringParametersAsUnicode=false a
connection string-be, property-kent ha esetleg nem feltetlen kell a
stringeket unicode-ba kuldeni es a select hasznalna varchar-os index-et.
Amugy erdekes lenne megnezni, hogy milyen query plan generalodott a
prepared es a sima statement eseten. Lehet nem tudja hasznalni x
indexet, az emlitett elso eset miatt.
Szerintem ilyesmi lehet a gond egyebkent. Eloszor is nezd meg a
string-es, varchar index-es dolgot, majd a tobbi adattipust.
Elviekben, elviekben:) nem kellene elteres legyen igazan, csak ha
osszevissza elkezd konvertalgatni a driver.
C.
További információk a(z) Javalist levelezőlistáról