Pagina 5 di 5 primaprima ... 3 4 5
Visualizzazione dei risultati da 41 a 47 su 47
  1. #41
    Sì sorry...mysql, MariaDb ,phpmyadmin

  2. #42
    uso Visual studio codee per scrivere codice ma il progetto è in php V 5.6 e non supporta Xdebug.

  3. #43
    Facendo un po' di debugging ho avuto conferma che il rallentamento me la da questa pagina php

    codice:
    <?php
    
    
    require('../../includes/config.php');
    require('../../includes/necaDB.php');
    
    
    	
    $time = microtime();
    $time = explode(" ", $time);
    $time = $time[1] + $time[0];
    $start = $time;
    
    
    
    
    
    
    $start = $_GET["start"];
    $length = $_GET["length"];
    $search = $_GET["search"];
    $order = $_GET["order"];
    $columns =$_GET['columns'];
    
    
    $id_sedeClienteNeca = myLib::sessionParam("id_sedeClienteNeca", 0);
    $initRow = $start;
    $stepRowIndex = 1;
    $sqlOrder = 'ASC ';
    $asc = true;
    if (isOrderedByRank($order) && $order[0]['dir'] == 'desc') {
        $initRow = $start + $length;
        $stepRowIndex = -1;
        $sqlOrder = 'DESC ';
        $asc = false;
    } 
    
    
    $limit = '';
    if ($length != '-1') {
        $limit ='LIMIT '.$start.','.$length;
    }
    $cSQLHead ='SELECT
                    @curRow := @curRow + ' . $stepRowIndex . ' AS row_number,
                    CS.id_sedeClienteNeca,
                    A.id_allievo Codice,
                    trim(concat(IFNULL(CS.cognome, ""), " ", IFNULL(CS.nome, ""))) Allievo,
                    "0" Schede,
                    "0" Media,
                    "0" SchedeX,
                    "0" MediaX,
                    "Non valutabile" Giudizio,
                    IFNULL(A.listatoQuiz, "") Patente,
                    UltimoAccesso,
                    IFNULL(LQ.prefisso, "IT") LTesti,
                    IFNULL(LA.prefisso, "IT") LAudio,
                    IFNULL(LI.errori, 0) Errori,
                    LI.Domande,
                    A.id_allievo Presente ';
    
    
    $cSQLPart2 = 'FROM allievo A
            left join clientescuola CS ON CS.id_clienteScuola = A.id_clienteScuola
            left join pratica PR ON PR.id_pratica = A.id_pratica
            left join mediaweb MW ON MW.id_mediaWeb = A.id_mediaWeb
            left join lingua LQ ON LQ.id_lingua = MW.linguaQuiz
            left join lingua LA ON LA.id_lingua = MW.linguaAudio
            left join listato LI ON LI.tipo = A.listatoQuiz
            JOIN  (SELECT @curRow := ' . $initRow . ') r
            left join (
                SELECT
                sync.id_allievo AS id_allievo,
                   sync.dataFine as UltimoAccesso
                   FROM sync
                LEFT JOIN allievo A ON A.id_allievo = sync.id_allievo
                LEFT JOIN clientescuola CS ON CS.id_clienteScuola = A.id_clienteScuola
                WHERE CS.id_sedeClienteNeca = ' . $id_sedeClienteNeca.'      
                GROUP BY sync.id_allievo 
           ORDER BY sync.dataFine  ASC
            ) SSX ON SSX.id_allievo = A.id_allievo AND SSX.UltimoAccesso = UltimoAccesso 
            WHERE A._stato!="D" AND CS.id_sedeClienteNeca = ' . $id_sedeClienteNeca. '  ';
    
    
    
    
    
    
            
    if (isset($search['value']) && $search['value']!=""){
        $cSQLPart2 .='AND (CS.nome LIKE "%' . $search['value'] . '%" OR CS.cognome LIKE "%' .$search['value'] . '%") ';
    }
    $cSQLPart2.='ORDER BY ';
    if (isset($order[0]['column']) && $order[0]['column'] > 0) {
        $cSQLPart2 .= $columns[$order[0]['column']]['data'] . '  ' . $order[0]['dir'] . ', ';
    }
    $cSQLPart2.='Allievo ' . $sqlOrder .', UltimoAccesso ' .$sqlOrder . ' ';
    
    
    
    
    if ($length != '-1') {
        $cSQLPart2 .= $limit;
    }
    
    
    $cSQLTot = 'SELECT COUNT(*) AS TOTAL FROM allievo A
    left join clientescuola CS ON CS.id_clienteScuola = A.id_clienteScuola 
    WHERE A._stato!="D" AND CS.id_sedeClienteNeca = ' . $id_sedeClienteNeca;
    
    
    
    
    
    
    //echo $cSQL;
    $myDB = new NecaDB();
    $cSQL = $cSQLHead . $cSQLPart2;
    
    
    $data = $myDB->class_arraySQL($cSQLTot);
    $total = $data[0]['TOTAL'];
    //echo $total . ", " . $start . ", " . $length;
    //echo $cSQL;
    if (!$asc) $initRow = $total - $start;
    
    
    $recordsTotal=intval($total);
    $recordsFiltered=intval($total);
    
    
    
    
    
    
    $data = $myDB->class_arraySQL($cSQL, false, false, $initRow, $asc);
    
    
    
    
    
    
    $json_data = array(
        "recordsTotal"    => intval( $total ),
        "recordsFiltered" => intval( $total ),
        "rows"            => $data
    );
     
    
    
    $time1 = microtime(true);
    $result1 = mysql_query( $cSQL );
    $time1 = microtime(true) - $time1;
    $fp=fopen("allieviscuola.txt","a");
    $tempo=($time1 * 1000) . ' milliseconds '."\r\n\r\n";
    fwrite($fp,$tempo);
    fclose($fp);
    
    
    
    
    echo str_replace('},{', '},' . "\n" . '{', json_encode($json_data, JSON_UNESCAPED_UNICODE));
       
    
    
    function isOrderedByRank($order) {
        return isset($order[0]['column']) && $order[0]['column'] == 0;
    }
    
    
    ?>
    Precisamente perde tempo nella subquery dove estrae ultimo Accesso!

  4. #44
    Quote Originariamente inviata da Maxilboss93 Visualizza il messaggio
    Precisamente perde tempo nella subquery dove estrae ultimo Accesso!
    esattamente quale sarebbe?

  5. #45
    /*nella left join non subquery...errore mio*/



    left join (
    SELECT
    sync.id_allievo AS id_allievo,
    sync.dataFine as UltimoAccesso
    FROM sync
    LEFT JOIN allievo A ON A.id_allievo = sync.id_allievo
    LEFT JOIN clientescuola CS ON CS.id_clienteScuola = A.id_clienteScuola
    WHERE CS.id_sedeClienteNeca = ' . $id_sedeClienteNeca.'
    GROUP BY sync.id_allievo
    ORDER BY sync.dataFine ASC
    ) SSX ON SSX.id_allievo = A.id_allievo AND SSX.UltimoAccesso = UltimoAccesso

  6. #46
    Facendo l' explain della Select della getallievi... cioè quella postata sopra ho ottenuto questo:
    id select_type table type possible_keys key key_len ref rows Extra
    1 PRIMARY <derived2> system NULL NULL NULL NULL 1 Using temporary; Using filesort
    1 PRIMARY CS ref PRIMARY,id_sedeClienteNeca id_sedeClienteNeca 5 const 616
    1 PRIMARY A ref id_clienteScuola,_Stato id_clienteScuola 5 neca_mediaweb.CS.id_clienteScuola 1 Using where
    1 PRIMARY MW eq_ref PRIMARY PRIMARY 4 neca_mediaweb.A.id_mediaWeb 1 Using where
    1 PRIMARY LQ eq_ref PRIMARY PRIMARY 4 neca_mediaweb.MW.linguaQuiz 1 Using where
    1 PRIMARY LA eq_ref PRIMARY PRIMARY 4 neca_mediaweb.MW.linguaAudio 1 Using where
    1 PRIMARY LI ref tipo tipo 27 neca_mediaweb.A.listatoQuiz 1 Using where
    1 PRIMARY <derived3> ref key0 key0 5 neca_mediaweb.A.id_allievo 10 Using where
    3 DERIVED CS ref PRIMARY,id_sedeClienteNeca id_sedeClienteNeca 5 const 616 Using index; Using temporary; Using filesort
    3 DERIVED A ref PRIMARY,id_clienteScuola,id_allievo_sede id_clienteScuola 5 neca_mediaweb.CS.id_clienteScuola 1 Using index
    3 DERIVED sync ref id_allievo,idx_allievo,id_allievo_tipo idx_allievo 4 neca_mediaweb.A.id_allievo 94 Using index
    2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used


    Se noti viene fatto un passaggio di 616 righe 2 volte.... conosci un modo per fargli fare una sola volta il passaggio su id_sedeclienteNeca?

  7. #47
    prova le SP, credo di avertelo già detto

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.