SQL SERVER臨時表排序問題的解決方法
在SQL SERVER 2005/2008中,如果將有序的記錄插入臨時表,則從臨時表查詢出來的記錄是有序的(不依賴ORDER BY也是有序狀態(tài)),但是從SQL SERVER 2012開始,即使插入的記錄集有序,查詢出來的結(jié)果變成無序了。需要依賴ORDER BY來或得到一個有序結(jié)果。例如下面例子:
SELECT * INTO #tables FROM sys.tables ORDER BY name; SELECT * FROM #tables;

如上所示,SQL SERVER 2014則是無序狀態(tài),我很是奇怪怎么從SQL SERVER 2012就開始變成無序了,這對我們來說猶如一個黑盒子,只知道結(jié)果集出現(xiàn)了變化,但是不知道內(nèi)部啥變化導致這個現(xiàn)象出現(xiàn)。Records not sorted in the table when using ORDER BY clause to insert data into Temp Table 官方論壇對這個問題的描述如下:

如果有特殊的需要,要求臨時表里面的數(shù)據(jù)有序,則可以通過創(chuàng)建聚集索引來解決這個問題。如下所示:
SELECT * INTO #tables FROM sys.tables WHERE 1= 0; CREATE CLUSTERED INDEX IDX_#tables_NAME ON #tables(name); INSERT INTO #tables SELECT * FROM sys.tables ORDER BY name; SELECT * FROM #tables;

總結(jié)
到此這篇關(guān)于SQL SERVER臨時表排序問題解決的文章就介紹到這了,更多相關(guān)SQL SERVER臨時表排序問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SQL server 2019數(shù)據(jù)庫安裝教程詳解
SQL Server 是Microsoft?公司推出的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點,Microsoft SQL Server?數(shù)據(jù)庫引擎為關(guān)系型數(shù)據(jù)和結(jié)構(gòu)化數(shù)據(jù)提供了更安全可靠的存儲功能,本章教程,介紹一下SQL Server 2019的安裝過程2024-09-09
SQL Server誤區(qū)30日談 第15天 CheckPoint只會將已提交的事務寫入磁盤
這個誤區(qū)是由于太多人對日志和恢復系統(tǒng)缺少全面的了解而存在已久。CheckPoint會將自上次CheckPoint以來所有在內(nèi)存中改變的頁寫回磁盤(譯者注:也就是臟頁),或是在上一個CheckPoint讀入內(nèi)存的臟頁寫入磁盤2013-01-01
SQL Server刪除表及刪除表中數(shù)據(jù)的方法
本文介紹SQL Server中如何刪除表,如何刪除表中的數(shù)據(jù)。在刪除表數(shù)據(jù)時有delete和truncate兩種方法,delete和truncate有什么區(qū)別呢2016-04-04

