在sybase中查询unicode(非ascii)字符时响应慢

时间:2011-12-27 12:39:43

标签: sql sybase-ase tibco-ems

查询1:Select * from table where fieldname = 'abc'

查询2:Select * from table where fieldname = 'XY�'

  • 我的查询1在150毫秒执行
  • 我的查询2在5000mS
  • 中执行

返回零结果(数据库中不存在abcXY�)。

一旦我运行查询2然后重新运行查询1,如果查询1在同一会话中运行(大约2000ms而不是早期的150ms),则查询1开始花费更长的时间。

我的fieldname已编入索引(非聚集索引)。

我正在使用Adaptive Server Enterprise / 12.5.4

我试图为两者做一个展示计划。两者都显示相同的结果。

我担心:

  1. 为什么使用非ascii字符的查询应该花费更多时间?这与索引有关吗?
  2. 运行查询2不应影响我的查询1响应时间。有什么方法可以解决这个问题吗?
  3. 由于

1 个答案:

答案 0 :(得分:1)

我发现了问题。 TIBCO EMS对unicode字符(非ascii)进行了一些更改,这会导致sybase中的查询计划更改为某些非优化的查询计划。在Java中使用预准备语句时,查询计划会被缓存,因此将来所有查询都会变慢。