sql >> Base de Datos >  >> RDS >> Mysql

¿Es malo para el rendimiento seleccionar todas las columnas?

El problema aquí no es tanto una cuestión del servidor de la base de datos, sino solo la comunicación de la red. Al seleccionar todas las columnas a la vez, le está diciendo al servidor que regrese a usted, todas las columnas a la vez. En cuanto a las preocupaciones sobre IO y todo eso, se abordan muy bien en la pregunta y respuesta que @Karamba dio en un comentario:seleccionar * frente a seleccionar columna . Pero para la mayoría de las aplicaciones del mundo real (y uso "aplicaciones" en todos los sentidos), la principal preocupación es solo el tráfico de red y cuánto tiempo lleva serializar, transmitir y luego deserializar los datos. Aunque en realidad, la respuesta es la misma en ambos sentidos.

Por lo tanto, retirar todas las columnas es excelente, si tiene la intención de usarlas todas, pero eso puede significar una gran cantidad de transferencia de datos adicional, especialmente si almacena, por ejemplo, cadenas largas en sus columnas. En muchos casos, por supuesto, la diferencia será indetectable y, en su mayoría, es solo una cuestión de principios. No todos, pero una gran mayoría.

En realidad, es solo una compensación entre la pereza que mencionaste (y créeme, todos nos sentimos así) ahora y lo importante que es el rendimiento realmente. es.

Dicho todo esto, si haces tiene la intención de usar todos los valores de columna, es mucho mejor que los recupere todos a la vez y no que esté llenando un montón de consultas.

Piense en ello como si hiciera una búsqueda en la web:hace su búsqueda, encuentra su página y solo necesita un detalle. Puede leer la página completa y saber todo sobre el tema, o simplemente puede saltar a la parte sobre lo que está buscando y listo. Este último es mucho más rápido si eso es todo lo que desea, pero si luego va a tener que aprender sobre los otros aspectos, sería mucho mejor leerlos la primera vez que tener que hacer su búsqueda nuevamente y encontrar el sitio para hablar de ello.

Si no está seguro de si necesitará los otros valores de columna en el futuro, esa es su decisión como desarrollador, en cuyo caso es más probable.

Todo depende de cuál sea su aplicación, cuáles son sus datos, cómo los está usando y qué tan importante es el rendimiento realmente es para ti.