私は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 "));