![](/img/trans.png)
[英]SQL Server “<>” operator is very slow compared to “=” on table with a few million rows
[英]Performance Help on 144 million row table query SQL - Very slow
我的查詢需要幫助。 該表有1.44億行,這是一個階段表(我們在其中插入另一個表的數據)。 我之前沒有索引,並且該作業已經運行了9多個小時。 我將非聚集索引添加到具有多個列(AdvertiserName,MediaPlanName,MediaPlanNumber,CreativeDescription)的該表中,因為這種組合使其具有唯一性。 但是,即使現在執行計划也顯示了表掃描,而不是非聚集索引掃描,並且性能也沒有改善。
這是下面的查詢,使用SSIS將數據匯總到csv文件中需要花費很長時間。 如何提高此查詢的性能? 請幫忙!! 運行需要很長時間。 :(
SELECT
AdvertiserName,
AdvertiserID,
MediaPlanNumber,
MediaPlanName,
PublishingSiteName,
SiteName,
Week_Begin_Monday,
CreativeDescription,
SUM(CAST(ViewCount AS BIGINT)) ViewCount,
SUM(CAST(ClickCount AS BIGINT)) ClickCount,
Media,
Segment_Name,
Segment_CD,
Group_Name,
Group_CD,
Channel,
LOB,
Creative_Message,
Creative_Category,
Creative_Type,
SUM(GRP) GRP,
Intended_Delivery_Screen
FROM Stage_MM240(NOLOCK)
GROUP BY AdvertiserName,
AdvertiserID,
MediaPlanNumber,
MediaPlanName,
PublishingSiteName,
SiteName,
Week_Begin_Monday,
CreativeDescription,
Media,
Segment_Name,
Segment_CD,
Group_Name,
Group_CD,
Channel,
LOB,
Creative_Message,
Creative_Category,
Creative_Type,
Intended_Delivery_Screen
沒有WHERE子句,最快的執行將始終是通過表掃描。 如果它使用除唯一的聚集索引(基本上是PK)以外的任何索引,它將使磁盤訪問次數增加一倍。
我建議您嘗試限制正在讀取的數據。 如果不能的話,您只需要等待...
在這種情況下,普通索引將無濟於事,因為沒有限制行的位置條件,您可能應該嘗試探索以下方法之一:
1.使用MAXDOP參數來利用並行性
2.如果您使用的是SSIS,請嘗試使用BULK INSERT命令替換這些語句的可能性。
3.嘗試查看專門用於批量讀取和大數據的列存儲索引 ,因為它利用了壓縮
4.嘗試在非聚集索引中使用INCLUDE子句。 覆蓋INDEXES可用於按照查詢結果集所需的順序對數據進行物理維護,從而減少了以后對SORT操作的需要(我不會選擇此選項)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.