执行操作时,SQL Server如何确定列的顺序SELECT *?
SELECT *
我知道“排序依据”对于排序 数据 必不可少,但我希望 列名 保持一致。
注意:我的代码 不 取决于返回列的实际顺序。我只想知道SQL Server如何决定对列名称进行排序。
我的团队使用的大约20台计算机中,其中一台的行为有所不同。任何差异都应进行调查。当我们打开SQL Server Management Studio时,所有计算机的列名顺序似乎都相同。当我们的应用程序进行查询时,就是我看到的区别。
我正在使用SQL Server 2008和SQL Server 2008 R2。我的应用程序使用C#System.Data.SqlClient访问数据库。
编辑:我的问题原来是其中一台计算机被配置为以“ sa”身份登录,而不是目标用户。当我们希望它命中视图时,该查询直接命中该表。感谢您对了解sys.columns的帮助
column_id从系统角度看,它们是按顺序排列的sys.columns。
column_id
sys.columns
您可以通过以下方式进行检查:
SELECT column_id, name FROM sys.columns WHERE object_id = Object_id('MyTableName') ORDER BY column_id
编辑
这是给Dems的。您应该在更大的表上进行测试,但是看起来它使用表中定义的顺序,而不是索引:
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