2
主要更新:專用查詢運行正常,直接或者任何改變它製作,但在目前的狀態需要更長的時間後調試的幾天運行
我舉辦過類似的幾個疑問:
SELECT RTRIM(part) as part
FROM tableP pm
LEFT join tableS s on pm.id = s.id
INNER JOIN tableC cm ON cm.id = pm.id
WHERE name = 'NGW' AND status NOT IN ('NL', 'Z')
GROUP BY RTRIM(part), isnull(s.value,0)
ORDER BY isnull(s.value,0)
它在Java中運行,像這樣:
PreparedStatement select = con.prepareStatement(
"SELECT RTRIM(part) as part" +
"FROM tableP pm " +
"LEFT JOIN tableS s ON pm.id= s.id " +
"INNER JOIN tableC cm ON cm.id= pm.id " +
"WHERE name =? AND status NOT IN ('NL', 'Z') " +
"GROUP BY RTRIM(part), isnull(s.value,0) " +
"ORDER BY isnull(s.value,0) ");
select.setString(1, name);
ResultSet rs = select.executeQuery();
while(rs.next()){
... Data is Loaded...
的查詢已經在Java應用程序內部運行的罰款。突然之間,這種形式的3或4個查詢從一秒鐘以內減少到一分鐘以上。
我已經從SQL事件探查器複製了確切的查詢,當它直接在數據庫上運行時,它會在不到一秒的時間內執行。我開始對查詢進行更改,發現查詢的任何更改都會將其返回到1秒的性能,即使在語句之間添加單個空間。但只要我將它恢復到原來的確切狀態,就需要60多秒。
核心問題: 所以,我有一個解決方法,但什麼可能導致查詢即使只有一個變化小的空白不同運行?
請給出一個更精確的查詢,帶過濾器,帶參數。從Java和MSSQL EM。 – gbn 2011-01-25 19:19:08
@gbn,更新後的問題包含確切的查詢(更改名稱以保護無辜)以及調用它的Java代碼。 – jzd 2011-01-25 20:07:09