2010-12-14 36 views
0

我在Oracle的SQL tracing功能的幫助下比較了oracle的兩個不同JDBC驅動程序的結果。我正在使用TKProf來格式化結果。參數名稱在oracle跟蹤文件中的含義

當我看TKPROF的輸出有時我看到命名爲「V」前綴參數:

WHERE start_time BETWEEN :v0 AND :v1 

在其他情況下,參數沒有前綴:

WHERE start_time BETWEEN :1 AND :2 

我懷疑,在第二種情況,查詢優化器沒有選擇一些索引。

參數的命名約定中是否有提示?

回答

3

我當然不是JDBC驅動程序如何與數據庫交流的專家。幸運的是,別人會提供這些細節。

但我相信,參數名稱不應該是任何意義。這應該是特定驅動程序在將查詢發送到數據庫時決定調用它們的原因。但是,如果你可以查看綁定變量的實際值,那可能會告訴你一些事情。我擔心的是,一個驅動程序正在設置它,因此這些值必須在運行查詢的過程中經歷一次轉換,這可能會影響索引的使用。

1

它們是由客戶端軟件挑選的專用綁定變量名稱;可能在您的Java代碼中,查詢有between ? and ?,必須將其翻譯爲Oracle將理解的內容。名字幾乎無關緊要 - 當然與索引或優化無關。我說'差不多'是因爲我不確定Oracle是否會將它們看作是相同的查詢,還是會對每個查詢進行單獨的硬解析。