Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie bestimmt SQL Server die Reihenfolge der Spalten, wenn Sie ein `SELECT *` ausführen?

Sie sind in der Reihenfolge column_id aus der Systemansicht sys.columns .

Sie können es überprüfen durch:

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

BEARBEITEN

Das ist für Dems. Sie sollten mit einer größeren Tabelle testen, aber es sieht so aus, als würde sie die in der Tabelle definierte Reihenfolge verwenden, nicht den 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