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

    performance tra due sintassi sql

    La necessità è di chiedere quanti record vengono estratti in base ad una query. Da qualche parte avevo letto che fare count(*) è più veloce che non count(id).
    es:
    1) select count(*) as totale from tabella where condizione
    1) select count(id) as totale from tabella where condizione

    dove id ovviamente è un campo numerico che fa da chiave primaria.

    Risulta anche a voi questo?

  2. #2
    sono perfettamente uguali

    li gli dici che dati estrarre...ma tanto in questo caso deve contare e quindi non dovrebberò esserci differenze...cmq puoi fare uno scriptino che lancia la query 10.000 volte sia in un modo sia nell'altro su una tabella da 100.000 records e vedi i tempi di esecuzione ^^
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  3. #3
    hehe speravo di ottenere la risposta da qualcuno che questa prova l'aveva già fatta.

  4. #4
    usando EXPLAIN SELECT ... ho notato che, nel caso la clausola WHERE sia fatta su chiavi, se si usa count(*) si ottiene un "type" di tipo "range" mentre usando count(campo_non_chiave) il "type" è "all" ovvero meno performante.
    Sarà vero ?!?

  5. #5
    Originariamente inviato da Gianni_T
    usando EXPLAIN SELECT ... ho notato che, nel caso la clausola WHERE sia fatta su chiavi, se si usa count(*) si ottiene un "type" di tipo "range" mentre usando count(campo_non_chiave) il "type" è "all" ovvero meno performante.
    Sarà vero ?!?
    non ha senso...xche count conta le righe, e le righe non derivano dal campo preso in considerazione ma dalla clausola where\grouè by\limit ecc ecc ecc
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    infatti ho concluso il mio post sottolineando la mia perplessità sui diversi risultati ottenuti dalla EXPLAIN.

  7. #7
    select count(*) non conta nulla. Si limita a leggere il numero dei record della tabella. Per questo e' piu' performante. COUNT(campo) deve contare veramente, perche' deve escludere i campi null ed applicare le eventuali condizioni in WHERE.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.