2011-12-27 5 views
1

Запрос 1: Select * from table where fieldname = 'abc'Медленная реакция при запросе Юникода (не ASCII) символов в Sybase

Запрос 2: Select * from table where fieldname = 'XY�'

  • Мой запрос 1 выполняет в 150MS
  • мой запрос 2 выполняется в 5000 мс

Оба возвращают нулевые результаты (abc и XY� не существуют в базе данных).

После я запускаю запрос 2, а затем повторно запустить мой запрос 1, запрос 1 начинает принимать более длительное время, если он работает в одной сессии (около 2000 мс вместо прежних 150ms)

Мой имя_поля индексируется (не кластерный индекс).

Я использую Adaptive Server Enterprise/12.5.4

Я пытался сделать шоу план для обеих сторон. Оба показывают одинаковые результаты.

Мои заботы:

  1. Почему запросы с не символы ASCII должны занять больше времени? Это как-то связано с индексами?
  2. Выполнение запроса 2 не должно влиять на мой запрос 1 время отклика. Есть ли способ исправить это?

Благодаря

+0

Как выглядит таблица, пожалуйста, с индексами? И как 'Select fieldname из таблицы, где fieldname = 'whatever'' выполняется? – gbn

ответ

1

Я нашел вопрос к моей проблеме. TIBCO EMS делает некоторые изменения в символах unicode (non ascii), которые заставляют план запроса в sybase изменять какой-то не оптимизированный план запросов. При использовании кэшированных при использовании готовых операторов в плане запросов Java все будущие запросы становятся медленными.

 Смежные вопросы

  • Нет связанных вопросов^_^