在 sybase 中查询 unicode(非 ascii)字符时响应缓慢
查询 1:Select * from table where fieldname = 'abc'
查询 2:Select * from table where fieldname = 'XY�'
- 我的查询 1 在 150mS 内执行
- 我的查询2 在 5000mS 内执行
两者都返回零结果(数据库中不存在 abc
和 XY�
)。
一旦我运行查询 2,然后重新运行查询 1,如果查询 1 在同一会话中运行,则查询 1 开始花费更长的时间(大约 2000 毫秒,而不是之前的 150 毫秒)
。我的字段名已建立索引(非聚集索引)。
我正在使用 Adaptive Server Enterprise/12.5.4
我尝试为两者制定显示计划。两者显示相同的结果。
我的担忧:
- 为什么使用非 ASCII 字符的查询需要更多时间?这和索引有关系吗?
- 运行查询 2 不应影响查询 1 的响应时间。有什么方法可以解决这个问题吗?
谢谢
Query 1: Select * from table where fieldname = 'abc'
Query 2: Select * from table where fieldname = 'XY�'
- My query 1 executes in 150mS
- My query 2 executes in 5000mS
Both return zero results (abc
and XY�
do not exist in database).
Once I run query 2 and then rerun my query 1, query 1 starts taking longer time if it is run in same session (around 2000ms instead of earlier 150ms)
My fieldname is indexed (non-clustered index).
I am using Adaptive Server Enterprise/12.5.4
I tried to do a show plan for both. Both show same results.
My worries:
- Why queries with non ascii characters should take more time ? Is that something to do with indexes?
- Running query 2 should not impact my query 1 response time. Any ways to fix this?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现了我的问题。 TIBCO EMS 对 unicode 字符(非 ascii)进行了一些更改,这导致 sybase 中的查询计划更改为某些非优化的查询计划。当在 Java 查询计划中使用准备好的语句时,会缓存查询计划,结果所有未来的查询都会变慢。
I found issue to my problem. TIBCO EMS does some changes to unicode chars(non ascii) which causes query plan in sybase to change to some non optimized query plan. When using prepared statements in Java query plan is cached ,as a result all future queries become slow.