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

发布于 2024-12-23 04:01:23 字数 597 浏览 0 评论 0原文

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

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

  • 我的查询 1 在 150mS 内执行
  • 我的查询2 在 5000mS 内执行

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

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

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

我正在使用 Adaptive Server Enterprise/12.5.4

我尝试为两者制定显示计划。两者显示相同的结果。

我的担忧:

  1. 为什么使用非 ASCII 字符的查询需要更多时间?这和索引有关系吗?
  2. 运行查询 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:

  1. Why queries with non ascii characters should take more time ? Is that something to do with indexes?
  2. Running query 2 should not impact my query 1 response time. Any ways to fix this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫罗兰の梦幻 2024-12-30 04:01:23

我发现了我的问题。 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文