我正在尝试使用 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 "));