我有一張[100萬數據,11列]表。我的選擇查詢[select * from tbl
]似乎需要2分鐘才能完成。SQL查詢性能
服務器是SQL Server Express 2005.表具有聚集索引[主鍵],沒有其他索引。
如果我使用select * into table1 from tbl
創建表的副本,則新表上的相同選擇查詢最多需要10秒。我在表結構中找不到任何差異
什麼可能導致原始表格變慢?
我有一張[100萬數據,11列]表。我的選擇查詢[select * from tbl
]似乎需要2分鐘才能完成。SQL查詢性能
服務器是SQL Server Express 2005.表具有聚集索引[主鍵],沒有其他索引。
如果我使用select * into table1 from tbl
創建表的副本,則新表上的相同選擇查詢最多需要10秒。我在表結構中找不到任何差異
什麼可能導致原始表格變慢?
你如何運行查詢?來自遠程連接的SQL工具嗎?如果是這樣的話,部分問題可能與將數百行數據傳輸到客戶端(以及客戶端隨後處理該數據)的成本有關。也可能來自tbl查詢的select * into table1被數據庫巧妙地優化。鑑於查詢正在創建表的精確副本,數據庫可能能夠執行更高效的操作來複制數據,然後通過其通用SQL機制。您可以通過比較更復雜的查詢來進行測試,例如使用行的子集並在where子句中添加一些約束。
什麼原因導致表 變慢?
什麼都沒有。這並不慢。
「select * from table from table」 - 數據永遠不會離開服務器。
「select * from table」 - 將數據發送給必須進行處理的客戶端。這也意味着你通過某種網絡接口(甚至是本地)發送數據 - 所有這些都是開銷。
讀取1100萬行只需要時間來處理。
我的第一個表數據是使用來自.net應用程序的SQLBulkcopy創建的。我使用select * into創建了第二個表。 從表1中選擇*比從表2中選擇*要慢 – Samjog 2010-08-09 14:26:47
外部碎片是什麼樣的? – 2010-08-06 05:22:23
統計信息:更新它們或重建索引 – 2010-08-06 05:28:25