[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