1
다른 열의 동일한 값을 가진 행에서 같은 열의 값으로 열 (NULL 인 경우)을 업데이트하려고합니다 (그러한 경우 행이 있고 고유합니다). 아래 예제에서 Order_ID = 2에는 NULL Group_ID가 있습니다. 쿼리는 수량 열에 동일한 값을 가진 (고유 한) 행의 Group_ID를 삽입해야합니다. (이것은 단순한 예이며, 실제 테이블에는 30 개의 열과 900,000 개의 행이 있습니다.) 나는이 쿼리를 시도Oracl SQL : 다른 열의 조건과 함께 다른 열의 동일한 열 값으로 열 업데이트
Order_ID Price Quantity Group_ID
1 10 15 345
2 21 15 345
,하지만 분명히 걸리면 내가 (시간 후)을 중지해야합니다 :
Order_ID Price Quantity Group_ID
1 10 15 345
2 21 15 NULL
그래서 예상 출력은
update My_Table t1
set Group_ID=(select t2.Group_ID
from My_Table t1 inner join My_Table t2
on
t1.Quantity = t2.Quantity
where t1.Group_ID is not NULL and t2.Group_ID is NULL)
검색어를 실행했습니다. 다시 그것은 너무 많은 시간이 걸립니다. 테이블의 크기를 감안할 때 몇 시간이 걸릴까요? – Matin
수량 열에 인덱스가 필요할 수도 있습니다. 쿼리가 실행되는 방법에 대한 자세한 정보를 제공하는 Explain 계획을 작성하는 방법은 다음을 참조하십시오. http://dba.stackexchange.com/questions/18639/how-do-you-get-the-explain-plan – Rene
이제 나는 plan_table을 가지고있다. UPDATE STATEMENT의 경우 CPU_cost는 221447373180674, IO_cost : 2894221652, 시간 : 34859082입니다.이 숫자를 이해하고 있는지 확신 할 수 없지만 너무 큽니다. 쿼리를 효율적으로 만들려면 어떻게해야합니까? – Matin