2013-06-29 2 views
0

이것은 매우 멍청한 질문입니다.기본 데이터베이스에 연결, 쿼리 실행, 연결 닫기?

하지만이 잘못 작성된 데이터베이스 쿼리에서 비롯된 것으로 생각되는 문제가 있습니다. 연결을 닫지 않거나 연결을 닫는 것이 필요한지 여부는 알 수 없지만 서버는 약 60 초 후에 시간 초과됨을 나타내며 높은 리소스 사용을 유발합니다. 누구든지이 쿼리에 어떤 문제가 있다고 말할 수 있습니까?

데이터베이스에서 가져 오는 기본 PHP 쿼리입니다.

<?php if(isset($_POST['submit'])) { 

    //print_r($_POST); 

    $example=$_POST['...']; 

    if ($job_number=="") { die("Nothing here."); 

    } 

    $con = mysql_connect("...","...","..."); 

    if (!$con) 

     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("...", $con); 

    $query = "SELECT * FROM EXAMPLE WHERE job_number='$example' OR email='$example'"; 

    $result = mysql_query($query); 

    if (mysql_num_rows($result) == "0") { 

    echo 
    'Nothing here.'; 

exit; 
    } 

    echo "<div class='sample'>"; 

    while ($row = mysql_fetch_assoc($result)) { 
     //print_r($row); 
     //customer name 

     echo "<h2>" . $row['name'] ."</h2>"; 

     //status 

     echo "<p>" . $row['status'] ."</p>"; 


     } 
     echo "</div>"; 

    } 
mysql_close($con); 
?> 
+0

이 예제는 괜찮습니다. 테이블을 몇 행 있습니까? –

+0

테이블이 실제로 커지면 (수백만 행),'job_number'와'email'에 인덱스가 있습니까? – Barmar

+0

mysql_close ($ con);''를 더 이상 쿼리하지 않을 경우 결과를 얻은 직후에 이동해야합니다. 그대로, 나가면 그걸 열어 둡니다. – DivinusVox

답변

0

당신이 이해하지 못하는 데이터베이스에 대해서는 많은 부분이 있습니다.

데이터베이스를 읽는 데 시간이 오래 걸립니다. 색인이 생성되는 방식에 따라 색인을 읽는 방법을 정의합니다.

Measuring actual MySQL query time

한 번 봐 ... 그리고 몇 가지 다른. 데이터베이스가 거대하고 구조가 잘못되었을 가능성이 있습니다. 귀하의 질문에 위로를 지 웁니다 여기에 풍부한 정보가있다

http://en.wikipedia.org/wiki/Database

: 이것은 내가 당신을 참조 곳입니다.