Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

In che modo SQL Server determina l'ordine delle colonne quando si esegue un `SELECT *`?

Sono nell'ordine di column_id dalla vista di sistema sys.columns .

Puoi verificarlo:

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

MODIFICA

Questo è per i democratici. Dovresti testare su una tabella più grande, ma sembra che utilizzi l'ordine definito nella tabella, non l'indice:

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