Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment SQL Server détermine-t-il l'ordre des colonnes lorsque vous effectuez un `SELECT *` ?

Ils sont dans l'ordre de column_id depuis la vue système sys.columns .

Vous pouvez le vérifier en :

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

MODIFIER

C'est pour les démocrates. Vous devriez tester sur une table plus grande, mais il semble qu'elle utilise l'ordre défini dans la table, pas l'index :

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