Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    Velocità di queste due query

    ciao,
    secondo voi quale di questi due costrutti (query + stampa risultato) è più veloce?

    codice:
    $tot_utenti = mysqli_num_rows(mysqli_query($db, "SELECT utente_id FROM utenti WHERE..."));
    oppure

    codice:
    $sql = mysqli_query($db, "SELECT COUNT(utente_id) AS TotUtenti FROM utenti WHERE...");
    $riga = mysqli_fetch_array($sql);
    $tot_utenti = $riga['TotUtenti'];

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    COUNT, ovviamente. Con num_rows tu vai a contare il numero di righe che hai selezionato con la query, questo significa che stai processando inutilmente un intero set di dati al solo scopo di contarli.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ci metteranno entrambe 0.0001s, non scherzo, che te ne fai della più veloce?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    per più veloce intendevo meglio ottimizzata: come scritto da Kurt con count conto solo le righe invece con l'altra query estraggo inutilmente tutti i record (anche se questi fossero migliaia) o sbaglio?

    A questo punto, potrei ottenere il tutto su una sola variabile come la prima query senza usare mysqli_fetch_array?

  5. #5
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    come scritto da Kurt con count conto solo le righe invece con l'altra
    query estraggo inutilmente tutti i record (anche se questi fossero
    migliaia) o sbaglio?
    A parte questo, quando devi contare il numero di occorrenze di una lista tu al database non richiedi una parte di quella lista per contare i risultati, chiedi direttamente il numero delle righe coinvolte. Recuperarle tutte per poi e contarle tu stesso è ridondante.

    A questo punto, potrei ottenere il tutto su una sola variabile come la prima query senza usare mysqli_fetch_array?
    da php 5.4, $tot_utenti = mysqli_fetch_array(mysqli_query($db, "SELECT COUNT(utente_id) AS TotUtenti FROM utenti WHERE..."))['TotUtenti'];

    Ma una cosa del genere è illeggibile. Con PDO:

    $count = $pdo->query('SELECT COUNT(*) FROM ...')->fetchColumn();
    Ultima modifica di .Kurt; 04-02-2015 a 23:07

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