如果按页面调用,查询将运行很长时间

时间:2016-02-15 07:46:29

标签: php jquery mysql

我已经构建了两个查询,如果直接在mysql或phpMyAdmin中运行,最多可以在2或3秒内执行。

phpMyAdmin中的查询1说:

  

显示行0 - 49(1945总计,查询耗时3.9455秒。)

phpMyAdmin中的查询2说:

  

显示行0 - 49(总计901,查询耗时2.0582秒。)

然后我构建了一个页面,我在其中运行查询并在表格中打印结果

该页面(与我的应用程序中的所有其他页面一样)通过jQuery加载在容器中打开。 如果我尝试打开页面,我看到mysql开始运行并且永远不会停止(分钟)。如果我停止mysql服务,页面的静态部分将被正确呈现(表头)。正如您在下面的代码中看到的那样,查询没有输入参数或可能产生错误的变量。

页码如下:

<?php
try{
    $sql_aperta="
        SELECT veicoli.nome as portafoglio, serie.serie, data_acq,
        Descrizione, cedente, ammesso, prezzo_acq, originator, gruppo,
        COALESCE(sum(incassi_row.importo_inc),0) as flussi
        FROM crediti 
        JOIN azioni_row ON crediti.id_cre = azioni_row.id_cred
        JOIN serie ON crediti.cod_serie = serie.id
        JOIN sofferenze ON crediti.cod_soff = sofferenze.id_soff
        LEFT JOIN incassi_row ON crediti.id_cre = incassi_row.id_cre
        JOIN veicoli ON crediti.titolare = veicoli.id
        WHERE crediti.stato = 'aperta'
        GROUP BY crediti.id_cre";  
    $dati_aperta = $pdo->query($sql_aperta)->fetchAll();
}
catch(PDOException $e){
    $error = 'Errore ad estrarre i dati: '.$e->getMessage();
}
try{
    $sql_chiusa="
        SELECT veicoli.nome as portafoglio, serie.serie, data_acq,
        Descrizione, cedente, ammesso, prezzo_acq, originator, gruppo,
        COALESCE(sum(incassi_row.importo_inc),0) as flussi, data_chius,
        DATEDIFF(data_chius, data_acq) as coll_time
        FROM crediti 
        JOIN azioni_row ON crediti.id_cre = azioni_row.id_cred
        JOIN serie ON crediti.cod_serie = serie.id
        JOIN sofferenze ON crediti.cod_soff = sofferenze.id_soff
        LEFT JOIN incassi_row ON crediti.id_cre = incassi_row.id_cre
        JOIN veicoli ON crediti.titolare = veicoli.id
        WHERE crediti.stato = 'chiusa'
        GROUP BY crediti.id_cre";
    $dati_chiusa = $pdo->query($sql_chiusa)->fetchAll();
}
catch(PDOException $e){
    $error = 'Errore ad estrarre i dati: '.$e->getMessage();
}
?>

<div class="titolo">
    <h2><span id="home">Sofferenze</span> - <span id="home_int">Track record</span></h2>
</div>

<div class="pagina">
    <p><?php echo $data; ?></p>
    <table class="report">
        <caption class="report">Aggregato aperto</caption>
        <tr><th class="report">Portafoglio</th><th class="report">Lotto</th><th class="report">Data acquisizione</th>
        <th class="report">Controparte nominativo</th><th class="report">Cedente nominativo</th>
        <th class="report">Valore nominale ammesso</th><th class="report">Prezzo</th><th class="report">Cedente originario</th>
        <th class="report">Gruppo</th><th class="report">%prezzo/nominale</th><th class="report">Totale flussi</th><th class="report">% flussi/nominale</th></tr>

    <?php
    foreach($dati_aperta as $ap){
        echo '<tr>
            <td class="report">'.$ap['portafoglio'].'</td>
            <td class="report">'.$ap['serie'].'</td>
            <td class="report">'.mysql2table($ap['data_acq']).'</td>
            <td class="report">'.$ap['Descrizione'].'</td>
            <td class="report">'.prot2name($ap['cedente'],$pdo).'</td>
            <td class="report">'.num2cur($ap['ammesso']).'</td>
            <td class="report">'.num2cur($ap['prezzo_acq']).'</td>
            <td class="report">'.prot2name($ap['originator'],$pdo).'</td>
            <td class="report">'.$ap['gruppo'].'</td>
            <td class="report">'.num2cur(round($ap['prezzo_acq']/$ap['ammesso']*100,2)).'%</td>
            <td class="report">'.$ap['flussi'].'</td>
            <td class="report">'.num2cur(round($ap['flussi']/$ap['ammesso']*100,2)).'%</td>
        </tr>';
    }
    ?>
    </table>
    <br><br>
        <table class="report">
        <caption class="report">Aggregato chiuso</caption>
        <tr><th class="report">Portafoglio</th><th class="report">Lotto</th><th class="report">Data acquisizione</th>
        <th class="report">Controparte nominativo</th><th class="report">Cedente nominativo</th>
        <th class="report">Valore nominale ammesso</th><th class="report">Prezzo</th><th class="report">Cedente originario</th>
        <th class="report">Gruppo</th><th class="report">%prezzo/nominale</th><th class="report">Totale flussi</th><th class="report">% flussi/nominale</th>
        <th class="report">Data chiusura</th><th class="report">Collection time</th></tr>

    <?php
    foreach($dati_chiusa as $ch){
        echo '<tr>
            <td class="report">'.$ch['portafoglio'].'</td>
            <td class="report">'.$ch['serie'].'</td>
            <td class="report">'.mysql2table($ch['data_acq']).'</td>
            <td class="report">'.$ch['Descrizione'].'</td>
            <td class="report">'.prot2name($ch['cedente'],$pdo).'</td>
            <td class="report">'.num2cur($ch['ammesso']).'</td>
            <td class="report">'.num2cur($ch['prezzo_acq']).'</td>
            <td class="report">'.prot2name($ch['originator'],$pdo).'</td>
            <td class="report">'.$ch['gruppo'].'</td>
            <td class="report">'.num2cur(round($ch['prezzo_acq']/$ch['ammesso']*100,2)).'%</td>
            <td class="report">'.$ch['flussi'].'</td>
            <td class="report">'.num2cur(round($ch['flussi']/$ch['ammesso']*100,2)).'%</td>
            <td class="report">'.mysql2table($ch['data_chius']).'</td>
            <td class="report">'.$ch['coll_time'].'</td>
        </tr>';
    }
    ?>
    </table>

</div>

0 个答案:

没有答案