Oracle JDBC 中setTimestamp的相關(guān)問(wèn)題有哪些
以下的文章我們主要介紹的是Oracle JDBC 的 setTimestamp 的相關(guān)的性能問(wèn)題,我前兩天在相關(guān)網(wǎng)站看見(jiàn)Oracle JDBC 的 setTimestamp 的相關(guān)的性能問(wèn)題的資料,覺(jué)得挺好,就拿出來(lái)供大家分享。
偶然發(fā)現(xiàn)三年前的一個(gè)技術(shù)問(wèn)題。當(dāng)時(shí)比較匆忙,避免掉即過(guò)去了?,F(xiàn)在 Metalink 上其實(shí)已經(jīng)把這個(gè)問(wèn)題作為一個(gè) Bug 處理了。
問(wèn)題描述:通過(guò) JDBC 上來(lái)的 Java 查詢應(yīng)用,SQL 表現(xiàn)異常。表字段使用了 DATE 類型,針對(duì)該字段時(shí)間區(qū)域很小的范圍查詢(預(yù)期應(yīng)該是走 INDEX RANGE SCAN),在 SQL Map 上指定索引,發(fā)現(xiàn)無(wú)效。仍然是 FULL TABLE SCAN 。
罪魁禍?zhǔn)祝簊etTimestamp() 把值綁定為 TIMESTAMP 類型,這樣和 DATA 類型比較的時(shí)候,CBO 就會(huì)選擇全表掃描。
通過(guò) Trace 能觀察到該異常行為。TIMESTAMP 在 Oracle JDBC 9.2.0.1 上就有了,連續(xù)幾個(gè)版本其實(shí)都有類似的問(wèn)題。
解決辦法:使用 setString() 而不是 setTimestamp() 方法。
這個(gè)故事告訴我們,Oracle JDBC 其實(shí)問(wèn)題挺多的。同樣,TIMESTAMP 潛在的問(wèn)題也不少。
以上的相關(guān)內(nèi)容就是對(duì)Oracle JDBC 的 setTimestamp 性能問(wèn)題的介紹,望你能有所收獲。
文章出自: http://www.programbbs.com/doc/3296.htm
【編輯推薦】



















