2008-08-29 11 views
23

En términos de rendimiento y optimizaciones:Servidor SQL: ¿importa el orden de las columnas?

  • Cuando se construye una tabla en SQL Server, ¿importa qué orden pongo en las columnas?
  • ¿Importa si mi clave principal es la primera columna?
  • Al construir un índice de múltiples campos, ¿importa si las columnas son adyacentes?
  • Usando la sintaxis ALTER TABLE, ¿es posible especificar en qué posición quiero agregar una columna?
    • En caso negativo, ¿cómo puedo mover una columna a una posición diferente?
+0

Consulte http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns – gbn

+0

Aquí hay una pregunta similar en DBA.SE: [¿El orden de las columnas en una tabla? definición de materia?] (http://dba.stackexchange.com/q/18719/2660) –

Respuesta

3

Yo diría que la respuesta a todas estas preguntas es no, Altough mi experiencia con MS-SQL va tan lejos como SQL2000. Podría ser una historia diferente en SQL2005

1

No a la primera 3, ya que el índice mantendrá los datos y no la última vez también

3

Para el cuarto punto: No, no se puede especificar dónde desea añadir el columna. Aquí está la sintaxis de ALTER TABLE: https://msdn.microsoft.com/en-us/library/ms190273.aspx

En MySQL ofrecen ALTER TABLE ADD ... AFTER ... pero esto no aparece en T-SQL.

Si desea volver a ordenar las columnas, deberá volver a generar la tabla.

Editar: Para su último último punto de viñeta, tendrá que DEJAR caer la tabla y volver a crearla para reordenar las columnas. Algunas herramientas gráficas que manipulan las bases de datos SQL harán esto por usted y harán que parezca que está reordenando columnas, por lo que es posible que desee investigar eso.

+0

enlace fijo. luchando contra la podredumbre desde [404] –

8

En SQL Server 2005, la colocación de columnas de longitud variable anulables tiene un impacto en el espacio: la colocación de columnas de tamaño variable anulables al final de la definición puede reducir el consumo de espacio.

SQL Server 2008 agrega la característica de columna "SPARSE" que niega esta diferencia.

Ver here.

-2

Por primera bala:

, orden de las columnas hace materia, al menos si está utilizando los BLOB en desuso image, text, o ntext, y el uso de SQL Server 2005. < =

En esos casos, debe tener esas columnas en el 'extremo' de la tabla, y hay un golpe de rendimiento cada vez que recupera uno.

Si está recuperando los datos de dicha tabla utilizando un DAL, este es el lugar perfecto para el patrón Lazy Load.

+0

¿Por qué el voto a favor? – egrunin

+0

Pensé que había comentado. Basura completa http://stackoverflow.com/questions/6692021/performance-space-implications-when-ordering-sql-server-columns/6692107#6692107 – gbn

0

El orden de las columnas no es importante al crear una tabla. Podemos organizar las columnas mientras recuperamos los datos de la base de datos. La clave principal se puede establecer en cualquier columna o combinación de columnas.

Cuestiones relacionadas