2011-12-27 3 views
1

쿼리 1 : Select * from table where fieldname = 'abc'느린 응답 사이베이스에서 유니 코드 (비 ASCII) 문자를 조회

질의 2 : Select * from table where fieldname = 'XY�'

  • 내 쿼리 5000mS
  • 을에서 150ms의
  • 내 쿼리 2가 실행 1이 실행

모두 0을 반환합니다 (abcXY�은 데이터베이스에 없습니다).

나는 쿼리 2를 실행 한 다음 내 쿼리 한 쿼리를 다시 실행하면이

내 필드 이름 인덱싱 (클러스터되지 않은 인덱스 (대신 이전 150ms의의 2000ms 주위) 같은 세션에서 실행되는 경우 더 이상 시간을내어 일 시작).

나는 Adaptive Server의 엔터프라이즈를 사용하고/12.5.4

나는 모두를위한 공연 계획을 수행하기 위해 노력했다. 둘 다 동일한 결과를 보여줍니다.

내 걱정 : 비 ASCII 문자

  1. 왜 쿼리는 더 많은 시간을 소요해야합니까? 색인과 관련이 있습니까?
  2. 쿼리 2를 실행해도 쿼리 1 응답 시간에 영향을 미치지 않습니다. 이 문제를 해결할 수있는 방법은 무엇입니까?

감사

+0

표가 색인과 함께 표시됩니다. 그리고 어떻게'fieldname = 'whatever''이 수행 할 테이블에서 fieldname을 선택합니까? – gbn

답변

1

나는 내 문제에 문제를 발견했다. TIBCO EMS는 sybase의 쿼리 계획을 일부 최적화되지 않은 쿼리 계획으로 변경시키는 유니 코드 문자 (ascii가 아님)에 몇 가지 변경을 수행합니다. Java 쿼리 플랜에서 준비된 문을 사용할 때 캐시되므로 결과로 향후 쿼리가 모두 느려집니다.

관련 문제