2016-01-04 138 views
-1

從Java程序查詢SQL-Server時,性能有問題。根據日誌,我發現查詢本身需要一段預計的時間。然而,呼叫resultset.next()似乎需要相當的時間(約3秒)。java.sql.ResultSet.next()方法需要3秒才能獲取1條記錄

long nextBegin = System.currentTimeMillis(); 
if(!resultset.next()) { 
    break; 
} 
logger.info("next cost = "+(System.currentTimeMillis() - nextBegin)); 

有日誌:

[16-01-04 10:47:34] INFO SqlExecutor:356 - next cost = 3575 

對這個問題的任何想法?謝謝〜

注意:設置fetchSize()沒有解決此問題。正如在SQLServer中直接檢查的那樣,只有一行由該語句返回。

+2

請提供您的查詢... – Devart

+0

您是否在JDBC連接中使用了'selectMethod = direct'或'selectMethod = cursor'? – Jan

+0

@Devart我真的很抱歉。但我不允許通過我工作的公司來分享。查詢是這樣的:「select column1,column2 from subquery inner join subquery where condition」。 – xurk

回答

0

隨着selectMethod=cursor,你executeQuery()開放光標,每個next()從遊標提取數據。與最初的SELECT類似,這是一種I/O操作。

嘗試運行selectMethod=direct一次的查詢進行比較。

請同時在SQL Server Management Studio中記錄您的查詢的執行時間,並檢查執行計劃。

+0

它的工作。感謝很多〜 – xurk

相關問題