0

私は4つのクエリでデータベースにクエリを実行しようとしています.各クエリは必要な行数を提供しますが、直面していますが、サーバーでクエリを実行すると、すべてが(比較的)高速に動作することに気付きますが、比較的単純なサーバーにすると、最大作業時間 (30 秒、制限実行時間 (PHP)) に値します。
私の while ループは MokedCcode のリストで動作し、各 MokedCcode はクエリに入り、次の MokedCcode に移動します。
注:
1) MokedCcode-s の数に比例することはわかっています。
2) 実行時間の制限を増やす必要がありますか?

1) これらのクエリを作成するより効率的な方法はありますか? 多分私はmysqlの機能を正しく使用していません。
たとえば、$emerg という最初のクエリでは、このクエリは日付間の行数を取得する必要があり、WCODE の優先度は 1 であり、両方のテーブル ( t と e ) で MokedCcode と一致する必要があります。

$emerg = mysql_num_rows(mysql_query("SELECT  t.*,e.DISCODE,e.AREA,e.COLOR,e.PRIORITY FROM    $tbl_name AS t   
 LEFT JOIN eventcodes AS e ON t.MokedCcode = e.MokedCcode AND t.WCODE=e.WCODE  
 WHERE (t.MokedCcode='$MokedCcode' ) AND e.PRIORITY='1' 
 AND t.ndate BETWEEN '$start' AND '$end' ORDER By `id` DESC "));


さらに、さらに 3 つのクエリを追加しました。より高速にする方法についてアドバイスを求めたいと思います。

他の 3 つのクエリ:

    $regular = mysql_num_rows(mysql_query("SELECT  t.*,e.DISCODE,e.AREA,e.COLOR,e.PRIORITY FROM $tbl_name AS t    
    LEFT JOIN eventcodes AS e ON t.MokedCcode = e.MokedCcode AND t.WCODE=e.WCODE  
    WHERE (t.MokedCcode='$MokedCcode' ) AND e.PRIORITY!='1' 
    AND t.ndate BETWEEN '$start' AND '$end' ORDER By `id` DESC "));

    $regHandled = mysql_num_rows(mysql_query("SELECT  t.*,e.DISCODE,e.AREA,e.COLOR,e.PRIORITY FROM $tbl_name AS t  
    LEFT JOIN eventcodes AS e ON t.MokedCcode = e.MokedCcode AND t.WCODE=e.WCODE 
    WHERE (t.MokedCcode='$MokedCcode' ) AND e.PRIORITY!='1' 
    AND t.EventHandling!='0' AND t.ndate BETWEEN '$start' AND '$end' ORDER By `id` DESC "));

    $emergHandled = mysql_num_rows(mysql_query("SELECT  t.*,e.DISCODE,e.AREA,e.COLOR,e.PRIORITY FROM $tbl_name AS t  
    LEFT JOIN eventcodes AS e ON t.MokedCcode = e.MokedCcode AND t.WCODE=e.WCODE  
    WHERE (t.MokedCcode='$MokedCcode' ) AND e.PRIORITY='1'
    AND t.EventHandling!='0' AND t.ndate BETWEEN '$start' AND '$end' ORDER By `id` DESC "));
4

1 に答える 1