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

¿El orden de las columnas afecta el rendimiento en Microsoft SQL Server 2012?

El orden de las columnas en una tabla tendrá un impacto muy pequeño en el rendimiento, en comparación con el impacto en el rendimiento del diseño de su base de datos (entidades, atributos y relaciones), el diseño de su transacción y el diseño de su consulta.

Para saber si la diferencia no es insignificante, realmente necesitaría configurar algunas pruebas y comparar los resultados.

Por lo general, coloco la clave principal como la primera columna, luego las claves externas y luego las claves naturales y las columnas de acceso frecuente. Por lo general, coloco las cuerdas más largas hacia el final de la fila. Pero esto no es necesariamente una optimización del rendimiento, sino una preferencia de estilo que utilizo por comodidad.

El orden de las columnas puede tener un impacto en el tamaño de la fila en SQL Server, cuando una gran cantidad de columnas en una fila son anulables y la mayoría de esas columnas contienen NULL. SQL Server (como Oracle) tiene optimización donde no se reserva espacio para columnas que contienen valores NULL AL FINAL de la fila. Se reserva algo de espacio para cada columna de la fila, hasta el último valor no NULL de la fila.

La conclusión es que si tiene muchas columnas que aceptan valores NULL, querrá las columnas que no son NULL con mayor frecuencia ANTES de las columnas que son NULL con mayor frecuencia.

NOTA:Tenga en cuenta que SQL Server ordena las columnas dentro de una tabla primero según si la columna es de longitud fija o de longitud variable. Todas las columnas de longitud fija se almacenan primero, seguidas por todas las columnas de longitud variable. Dentro de esos conjuntos de columnas (fijas y variables), las columnas se almacenan en el orden en que se definen.