sql >> Database >  >> RDS >> Sqlserver

Hoe bepaalt SQL Server de volgorde van de kolommen wanneer u een `SELECT *` uitvoert?

Ze staan ​​in de volgorde column_id vanuit de systeemweergave sys.columns .

Je kunt het controleren door:

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

BEWERKEN

Dit is voor Dems. U moet testen op een grotere tabel, maar het lijkt erop dat deze de volgorde gebruikt die in de tabel is gedefinieerd, niet de 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


  1. Selecteer in statement waar bron een andere database is

  2. Index viel buiten de grenzen van de array

  3. Waarom kan ik geen specifieke sortering gebruiken in MySQL?

  4. MySQL - Veldwaarde wijzigen na X minuten inactiviteit