Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problema di lentezza sulla Query di data ultimo utilizzo

    Buongiorno programmatori, ho un problema con una query SQL che perde tantissimo tempo, ho un sito di un autoscuola che ha i quiz esame e i quiz normali della patente , in una sola tabella "sync" di dimensione molto grande raccoglie tutti i quiz fatti di tutti gli allievi di tutte le autoscuole,

    io vorrei guardare l'ultma dataFine dei quiz ed eseguire la query in poco tempo perchè così alla chiamata ajax che scarica il dato ci mette davvero troppo tempo, la query che utilizzo è la seguente:


    "SELECT `dataFine` as 'UltimoAccesso' FROM sync WHERE id_allievo = ". $id_allievo. " ORDER BY `dataFine` DESC LIMIT 1";

    C' è un modo per migliorare la performance della query?

    Qui sotto la pagina php:

    codice:
    <?php
    require('../../includes/config.php');
    require('../../includes/necaDB.php');
    
    
    $id_allievo = $_POST['id_allievo'];
    $id_sedeClienteNeca = $_POST['id_sedeClienteNeca'];
    
    
    
    
    $sql="SELECT `dataFine` as 'UltimoAccesso' FROM sync WHERE id_allievo = ". $id_allievo. " ORDER BY `dataFine` DESC LIMIT 1";
    
    
    $rows = NecaDB::arraySQL(null, $sql);
    
    
    echo json_encode($rows, true);
    codice:
    
    
    Qui sotto c è la chiamata ajax della jquery datatable che la gestisce:
    IN PIù METTO ANCHE LA FUNZIONE DI FORMATTAZIONE:
    codice:
    $.post("ajax/mediaweb/setData.php", { "id_allievo": data.Codice, "id_sedeClienteNeca": data.id_sedeClienteNeca }, function(data) {
                      data = JSON.parse(data);
                      setFormatdate(row, data, index);
                  });
    
    
    
     function setFormatdate(row, data, index) {
                if (data == undefined || data[0] == undefined || data[0] == "") {
                    row.cells[6].innerHTML = "-";
                } else {
    
    
                    var date = data[0].UltimoAccesso.split("-");
    
    
                    var date2 = date[2].split("T");
    
    
                    var time = date2[1].split(".");
                    time = time[0];
    
    
    
    
                    date = date2[0] + "/" + date[1] + "/" + date["0"];
    
    
                    row.cells[6].innerHTML = date;
                    // + "<br>" + time
    
    
                }
    codice:
    
    

    Per favore qualcuno che mi dica cosa posso migliorare , chiedo scusa al team di controllo di html.it ma non sapevo dove scrivere la domadna visto che c è sia PHP che SQl che Javascript e Jquery.

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Per prima cosa proverei a mettere un indice sulle colonne IdAllievo e datafine.

  3. #3
    A un campo mancava l'indice, ora infatti la query è più performante, grazie!
    Ultima modifica di Maxilboss93; 14-06-2019 a 12:58

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 © 2024 vBulletin Solutions, Inc. All rights reserved.