sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo determina SQL Server el orden de las columnas cuando haces un `SELECT *`?

Están en el orden de column_id desde la vista del sistema sys.columns .

Puedes comprobarlo por:

SELECT column_id, name
FROM sys.columns
WHERE object_id = Object_id('MyTableName')
ORDER BY column_id

EDITAR

Esto es para los demócratas. Debería probar en una tabla más grande, pero parece que usa el orden definido en la tabla, no el índice:

CREATE TABLE #T (cola int, colb int, colc int)

INSERT INTO #T
VALUES
(1,2,3),
(2,3,4),
(4,5,6)

SELECT * FROM #T

CREATE INDEX ix_test ON #T (colb, colc, cola)

SELECT * FROM #t
WHERE colb > 0

DROP TABLE #T