0

作成した Web ページの速度を上げようとしています。問題は、クエリ内にクエリがあることです。同じ結果を達成するためのより迅速な方法が必要だと感じていますが、アイデアが不足しています。(これを最初に試みたときは、ページの読み込みに 45 秒かかりましたが、現在は約 6 秒に短縮されています)

私がやろうとしているのは、テーブルからランレート情報を引き出すことです。ランレート テーブルから正しい開始レートと終了レートを取得する必要がありますが、最初に取り外さなければならないのはワークセンター ID だけです。

テーブルがもう少しうまくセットアップされていたら、おそらくとても難しかったと思いますが、それは私が受け継いだものであり、その結果、少し行き詰まっています. 各ワークセンター (約 15) から 1 か月分のデータを取得する必要があり、毎日 4 ~ 5 回の実行が行われる可能性があります。処理するデータはかなりの量です。

PHPコードは次のとおりです。

$qtotalStartup = mysql_query("
    SELECT startup.recordID, startup.date, startup.time, runrate.rate AS temRate, runrate.formID  
        FROM jos_a_inproc_startup startup JOIN jos_a_runrate runrate ON startup.recordID = runrate.recordID 
        WHERE startup.workcenterId = $id AND runrate.rate > 0 AND runrate.formID = 1 AND startup.date > DATE_SUB(NOW(), INTERVAL 1 MONTH)") or die(mysql_error());

$totalStartCtr = mysql_num_rows($qtotalStartup);


if ($totalStartCtr > 0) {
while($rtotalStartup = mysql_fetch_assoc($qtotalStartup)) {

        $hours = 0;
        $goalRate = 0;
        $sumHrRR = 0;
        $startDate = 0;
        $startTime = 0;

        $startupNum = $rtotalStartup['recordID'];
        $goalRate = $rtotalStartup['temRate'];
        $startDate = $rtotalStartup['date'];
        $startTime = $rtotalStartup['time'];    
        $startTime = strtotime($startDate . ' ' . $startTime);


//now that we have all of the startup form info, we can move to the end of run information

//this query will retrieve the correct date, time, and ending run rate for us to use with our calculations.
$qtotalEOR = mysql_query("
    SELECT eor.recordID AS eorRec, eor.date, eor.time, eor.startupid, runrate1.rate AS tempRate, runrate1.formID 
        FROM jos_a_inproc_eor eor JOIN jos_a_runrate runrate1 ON eor.recordID = runrate1.recordID 
        WHERE eor.startupid = $startupNum AND runrate1.rate > 0 AND runrate1.formID = 3") or die(mysql_error());

$totalEORCtr = mysql_num_rows($qtotalEOR);

if ($totalEORCtr > 0) {
while($rtotalEOR = mysql_fetch_assoc($qtotalEOR)) {

//reset the accumulator to 0 so we don't get extra 'bad' data.
$sumHrRR = 0;
$newGoalRate = 0;
$lastestDate = 0;
$latestTime = 0;

            $eorNum = $rtotalEOR['eorRec'];
            $latestDate = $rtotalEOR['date'];
            $latestTime = $rtotalEOR['time'];
            $latestTime = strtotime($latestDate . ' ' . $latestTime);
            $sumHrRR= $rtotalEOR['tempRate'];

どんなアイデアでも大歓迎です。これ以上の情報がないと、私が何をしようとしているのかを理解するのは難しいかもしれません。ありがとう。

4

4 に答える 4