Determinare se una tabella PostgreSQL ha righe

Per verificare in PostgreSQL se una tabella ha dei records (righe) faccio una SELECT count(*) ... e poi ovviamente verifico se il valore ritornato è maggiore di zero; riflettendo però la count è comunque una funzione di aggregazione che deve svolgere comunque un calcolo ed al crescere dei records perde sempre più tempo, c'è un modo più veloce ed efficiente della count per verificare il numero di righe da un tabella?

In Corso 4
PostgreSQL 19-06-2018 2 Risposte 1389 Visite 0

Risposte ( 2 approvate )

  1. Emanuele Segatti
    0
    19-06-2018 16:50:21
    Rispondi

    Prova con questa query:

    select true from table limit 1;
  2. Alberto Orfiesi
    0
    19-06-2018 16:48:28
    Rispondi

    La tua è una considerazione molto interessante, che di certo non tutti i neofiti si pongono. Ti dò al volo due suggerimenti che da soli migliorano notevolmente la velocità di esecuzione di una select count

    1. Esegui la count solo sulla chiave primaria e non su tutti i campi, in questo modo Select Count(id) From ... dove id è la tua chiave primaria (indice), il che velocizza enormemente la query
    2. Essendo il tuo scopo quello di verificare se la tabella ha righe o meno e non quello di contare i records potresti limitare i risultati al primo, scrivendo Select Count(id) From ... Limit 1 i vantaggi sono ovii.

    Semplice no! Spero ti sia stato utile.

Rispondi

Per poter rispondere a questa domanda, devi essere registrato e loggato sul sito, dopodichè compila il box sottostante cercando di essere il più chiaro ed esauriente possibile, la tua risposta potrebbe essere la soluzione che l'utente cerca ed essere contrassegnata come migliore, consentendoti così di ottenere punti ed autorevolezza.

Giovanni Campedi

Giovanni Campedi

Autore di questa domanda

 Domanda Precedente

 Elenco Domande 

Domanda Successiva