您的位置:首页 > 数据库

SQL SERVER 临时表的排序问题

2016-01-30 23:13 369 查看
在SQLSERVER2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDERBY也是有序状态),但是从SQLSERVER2012开始,即使插入的记录集有序,查询出来的结果变成无序了。需要依赖ORDERBY来或得到一个有序结果。例如下面例子:

SELECT*INTO#tablesFROMsys.tablesORDERBYname;
SELECT*FROM#tables;




如上所示,SQLSERVER2014则是无序状态,我很是奇怪怎么从SQLSERVER2012就开始变成无序了,这对我们来说犹如一个黑盒子,只知道结果集出现了变化,但是不知道内部啥变化导致这个现象出现。RecordsnotsortedinthetablewhenusingORDERBYclausetoinsertdataintoTempTable官方论坛对这个问题的描述如下:



如果有特殊的需要,要求临时表里面的数据有序,则可以通过创建聚集索引来解决这个问题。如下所示:

SELECT*INTO#tablesFROMsys.tablesWHERE1=0;
CREATECLUSTEREDINDEXIDX_#tables_NAMEON#tables(name);
INSERTINTO#tablesSELECT*FROMsys.tablesORDERBYname;
SELECT*FROM#tables;



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: