일렬 규칙이 있는 테이블에 관해서 한번에 처리하는 방법에 대해서 현재 php를 이용하여 반복문을 돌리고 있는데,
웹 연결 시간이 있어서 많은 량을 처리가 안되더라구요.
일단 mysql 쓰고 있습니다.
예를 들어 P1, P2, P3, P4, P5 ..... 으로 약 100개가 있습니다.
각 테이블에는
P1 테이블 (기본키는 _no로 자동 증가값이구요 생략 하겠습니다.)
a1 a2 a3 a4 a5
1 2 3 4 5
1 2 3 4 6
1 2 3 4 7
1 2 3 4 8
(이런식으로 데이터가 순서대로 들어가 있고 각각 1000개 이상 나열되어 있습니다.)
각 P에는 a1, a2, a3, a4, a5 5개를 합친값(더한값 아님)의 중복이 없습니다.
이해하기 쉽게 a1, a2, a3, a4, a5 이 5숫자가 사원 번호라던지 제품 번호라던지 학번 같이 고유의 숫자가 됩니다.
NAME 테이블는 a1, a2, a3, a4, a5, name 이 있습니다.
NAME 테이블에 a1, a2, a3, a4, a5 의 숫자가 규칙이 없이 되어 있습니다.
이것을 a1, a2, a3, a4, a5 를 통해서 P1인지 P2인지 구분하여 이름을 업데이트 하는 겁니다.
여기서 각 P 데이터에 이름이라는 컬럼을 추가 하였습니다.(0.1초 이하는 php 반복으로 수월하게 할수 잇더라구요.)
근데 여기서 두가지 문제가 생겼습니다.
첫번째는 쿼리문을 이렇게 썼습니다.
UPDATE P1 a, NAME b
SET a.name = b.name
where
a.a1 = b.a1
AND a.a2 = b.a2
AND a.a3 = b.a3
AND a.a4 = b.a4
AND a.a5 = b.a5
로 하니깐 많은 시간이 걸리더라구여 줄이는 방법이 있을까여?
P1의 실제 테이블을 실행 시켰을때 183.4초가 걸렸습니다.
(쿼리문 시간을 줄이는 방법)
두번째 문제는
위 쿼리 문에서 P1, P2 를 각각 써서 처리 해줘야 되는데
혹시 쿼리 변수 같은걸 사용해서 한번에 처리 하는 방법이 있습니까?
(또는 웹 원격 시간 제한을 늘리는 방법)
-------------------------------------------------------------------------------------------------------------------------
현재 php로 처리중에 있고,
for($i=1;$i<101;$i++){
$query = "
UPDATE P".$i." a, NAME b
SET a.name = b.name
WHERE
a.a1 = b.a1
AND a.a2 = b.a2
AND a.a3 = b.a3
AND a.a4 = b.a4
AND a.a5 = b.a5 ;
";
mysqli_query($conn, $query);
}
이렇게 처리하고있습니다.