Sto usando InnoDB. Ho bisogno di interrogare per ottenere 10 record da una tabella è qualsiasi ordine.È sicuro usare LIMIT senza ORDER BY
È sicuro utilizzare LIMIT senza ORDER BY? Sarebbe più veloce?
Sto usando InnoDB. Ho bisogno di interrogare per ottenere 10 record da una tabella è qualsiasi ordine.È sicuro usare LIMIT senza ORDER BY
È sicuro utilizzare LIMIT senza ORDER BY? Sarebbe più veloce?
Se non si utilizza ORDER BY allora si non stanno smistando i tuoi record, quindi renderà sicuramente più veloce il recupero dei tuoi dati. Quindi, se si utilizza semplicemente LIMIT, sarebbe più veloce rispetto ai dati recuperati tramite ORDER BY. Ma notate che in quel caso, quindi, i dati non saranno in alcun ordine.
Per quanto riguarda la sicurezza, non sono sicuro di quale sicurezza si sta pensando, in quanto non vi è alcun potenziale danno in una query che utilizza solo LIMIT e non utilizza una clausola ORDER BY.
È inoltre possibile consultare l'articolo: ORDER BY … LIMIT Performance Optimization
Sì, è possibile e sì, sarebbe più veloce (presumendo che l'ordine non sia importante per voi). order by
richiede l'ordinamento. Ciò significa che il database deve fare più lavoro per ottenere il risultato. Più comunemente limit
viene utilizzato con order by
poiché vogliamo mettere alcuni vincoli di ordinamento su che 10 record si ottiene (per esempio più recente, più alto rango di qualche tipo, etc.)
Dipende da cosa si considera come safe se si vuole risultato coerente (meanning, ottenendo lo stesso risultato ogni volta finché il contenuto della tabella non cambierà) o se vuoi risultati specifici (più grossi, nuovi, più vecchi, qualsiasi cosa) - di questo richiede ordine. Se per sicurezza si capisce che la query non si schiaccerà, e non si cura di quali risultati X si ottengono, allora sì, l'uso del limite va bene (questo in realtà viene fatto automaticamente da molti strumenti sql, come mysql workbench, per velocizzare le cose).
In termini di velocità- renderà waster senza fine per due ragioni:
limit 10
verranno eseguite più rapidamente di limit 100000
su tabelle di grandi dimensioni. Quando usi l'ordine, il server deve passare attraverso tutti i risultati, quindi non puoi fermarti nel mezzo.Quindi sì, con limite senza fine renderà più veloce
I 3 risposte finora sono buone. Ma non sono completamente corretti.
Contrariamente alle altre risposte, a volte tralasciando ORDER BY
sarà non renderlo più veloce. L'ottimizzatore potrebbe capitare di generare comunque le righe in quell'ordine. Esempi:
GROUP BY
generalmente ordina i risultati. Pertanto, se lo ORDER BY
corrisponde allo GROUP BY
, non vi è alcuno sforzo aggiuntivo.ORDER BY the_primary_key
potrebbe corrispondere all'ordine di recupero. Questo è quasi garantito per InnoDB senza una clausola WHERE
."Sicuro" non calcola.
è possibile utilizzare il limite senza ordine di. che tipo di safty vuoi? –