2011-12-27 84 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查询计划中使用预准备语句时,将缓存所有将来的查询速度缓慢。