Mysql
 sql >> Database >  >> RDS >> Mysql

È dannoso per le prestazioni selezionare tutte le colonne?

Il problema qui non riguarda tanto il server di database, quanto solo la comunicazione di rete. Selezionando tutte le colonne contemporaneamente, stai dicendo al server di tornare a te, tutte le colonne contemporaneamente. Per quanto riguarda le preoccupazioni su IO e tutto il resto, queste sono affrontate bene nella domanda e nella risposta che @Karamba ha fornito in un commento:seleziona * rispetto a seleziona colonna . Ma per la maggior parte delle applicazioni del mondo reale (e io uso "applicazioni" in tutti i sensi), la preoccupazione principale è solo il traffico di rete e il tempo necessario per serializzare, trasmettere e quindi deserializzare i dati. Anche se in realtà la risposta è la stessa in entrambi i casi.

Quindi tirare indietro tutte le colonne è fantastico, se intendi usarle tutte, ma può essere un trasferimento di dati molto aggiuntivo, in particolare se memorizzi, ad esempio, stringhe lunghe nelle tue colonne. In molti casi, ovviamente, la differenza non sarà rilevabile ed è per lo più solo una questione di principio. Non tutti, ma una maggioranza significativa.

È davvero solo un compromesso tra la tua pigrizia di cui sopra (e fidati di me, ci sentiamo tutti così) ora e quanto sia importante la performance davvero è.

Detto questo, se lo fai intendi utilizzare tutti i valori delle colonne, è molto meglio ritirarli tutti in una volta, quindi stai compilando un sacco di query.

Pensalo come fare una ricerca sul web:fai la tua ricerca, trovi la tua pagina e hai solo bisogno di un dettaglio. Potresti leggere l'intera pagina e sapere tutto sull'argomento, oppure potresti semplicemente saltare alla parte su ciò che stai cercando ed essere fatto. Quest'ultimo è molto più veloce se è tutto ciò che vuoi, ma se poi devi conoscere gli altri aspetti, faresti meglio a leggerli la prima volta piuttosto che dover fare di nuovo la tua ricerca e trovare il sito per parlarne.

Se non sei sicuro di aver bisogno degli altri valori di colonna in futuro, allora questa è la tua chiamata da fare come sviluppatore per il quale caso è più probabile.

Tutto dipende da qual è la tua applicazione, quali sono i tuoi dati, come li stai utilizzando e quanto sono importanti le prestazioni realmente è per te.