table1 consisting of student data 4,00,000 records
table2 consisting of student examination center with roll nos range-800 records
I have to search roll no in range and then allocate center to it
i tried all methods but failed
first I tried to update by join it took infinite time to execute and resulted in browser hang
then I tried to go to student data through center allocation data and then executed update. loop has to execute 800 times but after 1:30 hours it gives time execution exceeds error.
Please help me to find a quickest method to do it
METHOD1-HANGS BROWSER
Expand|Select|Wrap|Line Numbers
- UPDATE STUDENTDATA INNER JOIN CENTER ON STUDENTDATA.SCH=CENTER.SCH SET EXAMCENTER = EXMCENTER
- WHERE ROLLNO>=ROLLNO_FROM1 AND ROLLNO<=ROLLNO_TO1;
Expand|Select|Wrap|Line Numbers
- ?php
- //$myfile = fopen("cenfil17.txt", "w") or die("Unable to open file!");
- include 'include/conn.php';
- $sql = "update studentdata set examcenter=''" ;
- $result = $conn->query($sql);
- //SET innodb_lock_wait_timeout = 5000;
- //ini_set('innodb_lock_wait_timeout', '5000');
- $pSCHOOL="1";$vSCHOOL="4";
- $sql = "select * from CENTER order by SCHOOLNO2" ;
- $result = $conn->query($sql);
- ini_set('memory_limit', '-1');
- while($row = $result->fetch_assoc()) {
- $sql1 = "UPDATE studentdata SET examcenter = '".$row["exmcenter"]."' WHERE SCH='".$row["SCH"]."' AND ( CAST(rollno AS UNSIGNED) BETWEEN " . $row["SERIAL_FROM"]." AND ". $row["SERIAL_TO"]." OR CAST(rollno AS UNSIGNED) BETWEEN " . $row["SERIAL_FROM1"]." AND ". $row["SERIAL_TO1"]. ")" ;
- ECHO $sql1."<BR/>";
- //EXIT;
- $result1 = $conn->query($sql1);
- }
- //fclose($myfile);
- $conn->close();
- ?>