우리 코드는 C로 작성되었으며 DB는 Informix입니다. ESQL 프로그램에서 몇 가지 코드 최적화를 수행하고 다음 쿼리를 찾았습니다.어느 것이 더 빠릅니다 "col =? 또는 col =? or col =?" OR "where in (?,?,?) in"in informix (.ec/esql)?
업데이트 [일차 키 열] = [새 키] WHERE COL =? 또는 COL =? ...
where 절의 열 수가 동적으로 준비됩니다. 우리는 where 절의 준비를 멈추고 업데이트를하고, 다시 돌아와 나머지를 준비하기 위해 상위 카운트 검사를합니다. UPPER_MARK가
"30"인 경우 (> = UPPER_MARK가 where_parameter_count)
__
을 실행 update__ __ clean_and_continue;/*
UPDATE [TABLE] SET [PRIMARY KEY의 COLUMN] = [NEW KEY] COL IN IN ... */__
우리는 어디를 교체 할 생각 .. 또는 다시 준비 시작 (?,? ...)
"where or"보다 빠를까요?
시도했을 때 무엇을 발견 했습니까? 어느 쪽이든 빨라질 수도 있고 아무런 효과가 없을 수도 있습니다. –
샘플 데이터 세트 (1 백만 레코드 이상 및 30 OR 절 포함)에서 테스트 할 때 차이는 없습니다. –
놀랄 일이 아닙니다. 버전 변경과 같이 데이터베이스 서버를 크게 변경하면 다른 버전이 될 수 있습니다. 또한 코드를 한 방향으로 최적화하면 큰 변화는 다른 방법이 더 빠르다는 것을 의미 할 수도 있습니다. –