2011-12-27 29 views
1

查詢1:Select * from table where fieldname = 'abc'慢響應在Sybase查詢的unicode(非ASCII)字符時

問題2:Select * from table where fieldname = 'XY�'

  • 我的查詢1個執行在150MS
  • 我的查詢2個執行在5000毫秒

兩者均返回零結果(數據庫中不存在abcXY�)。

一旦我運行查詢2,然後重新運行我的查詢1,查詢1點開始服用較長時間,如果它是在同一個會話中運行(約2000毫秒,而不是早期的150毫秒)

我的字段名的索引(非聚集索引)。

我使用的Adaptive Server Enterprise/12.5.4

我試圖做兩個演出計劃。兩者顯示相同的結果。

我的擔心:

  1. 爲什麼非ASCII字符的查詢應該採取更多的時間?這與索引有關嗎?
  2. 運行查詢2不應該影響我的查詢1響應時間。任何方法來解決這個問題?

感謝

+0

請問桌子有什麼樣子,有索引嗎?那麼'如何從fieldname ='whatever''執行的表中選擇fieldname? – gbn 2011-12-27 12:42:41

回答

1

我發現問題,我的問題。 TIBCO EMS對unicode字符(非ascii)進行了一些更改,這會導致sybase中的查詢計劃更改爲某些非優化的查詢計劃。在Java查詢計劃中使用預準備語句時,將緩存所有將來的查詢速度緩慢。