우리 시스템에는 db2 database에 대한 몇 가지 성능상의 문제점이 있습니다. 최근 SQL을 실행하는 데 너무 많은 시간이 걸릴 수 있습니다. 다음 하나가 I하면 교체하면서 그 10 배가된다 "b.code1" 와 "병합 (b.code2, b.code1)"는 약 1 초 비용db2는 병합 함수의 성능을 향상
select * from table1 a
inner join table2 b on a.code = coalesce(b.code2,b.code1);
단순한 경우이다 (추가 : table2.code2에는 null 값만 있습니다.)
일부 복잡한 명령문에서는 1 초와 비교하여 40 초가됩니다.
미래에 null이 아닌 경우에 대비하여 code2를 유지하면서 성능을 향상시킬 수있는 방법이 있다면 더 좋을 것입니다. 각 열에 인덱스를 만들려고했지만 전혀 개선되지 않는 것 같습니다. 또한 병합 함수를 대체하는 일부 조건식을 시도했지만 비용이 동일했습니다.
'COALESCE (...)'의 성능을 향상시킬 수는 없습니다. 기본적으로 널이 아닌 첫 번째 값을 확인하는 'CASE' 문입니다 e (알았어, 어떤 db는'IFNULL (...) '을 제공하는데, 열이 함수 나 계산을 포함하고 있다면 약간 더 빠를 수 있지만 여기서는 관련이 없다). 이 경우 문제는 옵티마이 저가 주어진 열에 인덱스를 사용할 수 없게하는 것이므로 최선의 방법은 이것을 다른 방법으로하는 것입니다. –