亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server 性能調優之查詢從20秒至2秒的處理方法

2024-08-31 01:04:58
字體:
來源:轉載
供稿:網友

一、需求

需求很簡單,就是需要查詢一個報表,只有1個表,數據量大約60萬左右,但是中間有些邏輯。

先說明一下服務器配置情況:1核CPU、2GB內存、機械硬盤、Sqlserver 2008 R2、Windows Server2008 R2 SP1和阿里云的服務器,簡單說就是阿里云最差的服務器。

1、原始表結構

sqlserver,性能調優

非常簡單的一張表,這次不討論數據冗余和表字段的設計,如是否可以把Project和Baojian提出成一個表等等,這個是原始表結構,這個目前是沒有辦法改變的。

2、查詢的sql語句為

select *from( select *,ROW_NUMBER() OVER (ORDER BY sc desc) as rank  from(  select *,    case when ( 40-(a.p*(case when a.p > 0 then 1 else -0.5 end)))<=30       then 30       else ( 40-(a.p*(case when a.p > 0 then 1 else -0.5 end)))       end as sc   from (  select * from (    select a.ProjectNumber, a.ProjectName, a.BaojianNumber, a.BaojianName, a.ToubiaoPerson,     sum(UnitPrice) as sumPrice,      b.price as avgPrice,      ((sum(UnitPrice)-b.price)/nullif(b.price,0)*100) as p,     sum(case when UnitPrice>b.price then b.price else UnitPrice end )as pprice,     sum(case when UnitPrice>MaxPrice then 1 else 0 end ) as countChao    from ToubiaoDetailTest1 a      join (       select ProjectNumber, ProjectName, BaojianNumber, BaojianName, avg(price) as price       from(        select * from(         select ProjectNumber, ProjectName, BaojianNumber, BaojianName, ToubiaoPerson,           SUM(UnitPrice) as price,          SUM(case when UnitPrice>MaxPrice then 1 else 0 end ) as countChao         from ToubiaoDetailTest1          group BY ProjectNumber, ProjectName, BaojianNumber, BaojianName, ToubiaoPerson        ) tt         where tt.countChao = 0       ) t       group by ProjectNumber, ProjectName, BaojianNumber, BaojianName      ) b        on a.ProjectNumber=b.ProjectNumber and a.ProjectName=b.ProjectName and a.BaojianNumber=b.BaojianNumber and a.BaojianName=b.BaojianName    group by a.BaojianNumber, a.BaojianName, a.ProjectNumber, a.ProjectName, a.ToubiaoPerson, b.price    ) tt    where tt.countChao=0  ) a  ) b) t order by rank 

此段sql語句主要的功能是:

1、根據ProjectNumber, ProjectName, BaojianNumber, BaojianName, ToubiaoPerson分組,查詢所有數據的sum(UnitPrice)

  其中UnitPrice>MaxPrice的判斷是為了邏輯,如果有一條數據滿足,則此分組所有的數據不查詢。

2、根據ProjectNumber, ProjectName, BaojianNumber, BaojianName 分組,查詢所有數據的avg(price),以上兩步主要就是為了查詢根據ProjectNumber, ProjectName, BaojianNumber, BaojianName分組的avg(price)值。

3、然后根據邏輯獲取相應的值、分數和按照分數排序分頁等等操作。

二、性能調優

在未做任何優化之前,查詢一次的時間大約為20秒左右。

1、建立索引

根據sql語句我們可以知道,會根據5個字段(ProjectNumber, ProjectName, BaojianNumber, BaojianName, ToubiaoPerson)進行分組聚合,所以嘗試添加非聚集索引idx_calc。

在索引鍵列添加ProjectNumber, ProjectName, BaojianNumber, BaojianName, ToubiaoPerson。如圖:

sqlserver,性能調優

然后執行查詢sql語句,發現執行時間已經減半了,只要10610毫秒。

2、索引包含列

分析查詢sql可以得知,我們需要計算的值只有UnitPrice和MaxPrice,所以想到把UnitPrice和MaxPrice添加到idx_calc的包含列中。如圖

sqlserver,性能調優

然后執行查詢sql語句,發現執行時間再次減半,只要6313毫秒,現在已經從之前的20多秒優化成6秒多。

3、再次優化查詢Sql

再次分析sql語句可以把計算所有數據的avg(price)語句暫時放置臨時表(#temp_table)中,再計算其他值的時候直接從臨時表中(#temp_table)獲取數據。

sqlserver,性能調優

然后執行查詢sql語句,執行時間只有2323毫秒。

在硬件、表數據量和查詢稍復雜的情況下,這樣已經可以基本上滿足查詢需求了。

三、總結

經過三步:1、建立索引,2、添加包含列,3、用臨時表。用三步可以把查詢時間從20秒優化至2秒。

以上所述是小編給大家介紹的SQL Server 性能調優之查詢從20秒至2秒,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www欧美日韩| 理论片在线不卡免费观看| 精品国产一区二区三区在线观看| 国产成+人+综合+亚洲欧美丁香花| 精品国产一区av| 国产亚洲激情视频在线| 亚洲精品电影在线| 久久精品国产2020观看福利| 精品视频久久久久久| 亚洲精品之草原avav久久| 91色视频在线观看| 清纯唯美亚洲综合| 国产在线观看精品| 日韩av中文字幕在线播放| 精品美女国产在线| 日本精品免费一区二区三区| 欧美日韩激情美女| 在线观看久久av| 中文字幕精品www乱入免费视频| 久久久久久尹人网香蕉| 亚洲91精品在线观看| 国产女精品视频网站免费| 亚洲国产精品va在线看黑人动漫| 青草青草久热精品视频在线观看| 成人国产精品色哟哟| 亚洲人a成www在线影院| www.久久久久| 中文字幕精品一区二区精品| 亚洲情综合五月天| 日韩精品黄色网| 成人在线精品视频| 欧美大片在线影院| 97精品国产97久久久久久春色| 日本久久中文字幕| 久久久久久久久久国产| 国产亚洲激情在线| 26uuu另类亚洲欧美日本一| 91伊人影院在线播放| 国产精品尤物福利片在线观看| 国内偷自视频区视频综合| 午夜精品一区二区三区视频免费看| 成人黄色av免费在线观看| 日韩av网址在线| 久久久久久久一区二区| 久久男人av资源网站| 欧美成人精品一区二区| 亚洲天堂男人的天堂| 91精品国产综合久久久久久蜜臀| 亚洲一区二区三区四区在线播放| 欧美最近摘花xxxx摘花| 亚洲人成电影网站| 欧美在线激情网| 久久久久www| 国产精品久久久久久久久粉嫩av| 最近2019中文字幕在线高清| 国内偷自视频区视频综合| 欧美成人黄色小视频| 国产精品88a∨| 中文字幕一精品亚洲无线一区| 亚洲奶大毛多的老太婆| 久久久999成人| 欧洲中文字幕国产精品| 国产精品高精视频免费| 欧美日韩国产成人| 最近免费中文字幕视频2019| 亚洲成人激情视频| 91视频免费在线| 日韩精品黄色网| 国产精品av电影| 国产成人aa精品一区在线播放| 欧美精品久久久久久久免费观看| 日韩欧美精品在线观看| 国产91精品在线播放| 怡红院精品视频| 欧美性猛交丰臀xxxxx网站| 亚洲人成电影网站色| 日韩成人在线免费观看| 美女啪啪无遮挡免费久久网站| 欧美一级大片在线观看| 亚洲片在线观看| 久久九九亚洲综合| 亚洲国产精品久久久久秋霞蜜臀| 日韩在线视频观看| 红桃av永久久久| 欧美国产精品日韩| 97视频在线观看播放| 国产精品久久久久久久久久久久| 国产成人精品一区二区| 国产精品国模在线| 色综久久综合桃花网| 午夜精品久久久久久久男人的天堂| 色偷偷91综合久久噜噜| 欧美片一区二区三区| 亚洲男人天天操| 欧美另类极品videosbest最新版本| 91精品视频在线免费观看| 日韩av免费一区| 久久国产精彩视频| 亚洲午夜av电影| 国产精品色婷婷视频| 亚洲福利精品在线| 久久人人爽人人爽人人片av高请| 国产精品久久久久福利| 91欧美激情另类亚洲| 亚洲人成在线观看网站高清| 久久成人亚洲精品| 国产精品成熟老女人| 国产精品一区二区久久久久| 国产女人精品视频| 精品国产一区二区三区四区在线观看| 国产成人欧美在线观看| 亚洲午夜未删减在线观看| 亚洲日本成人网| 粗暴蹂躏中文一区二区三区| 亚洲精品一区在线观看香蕉| 中文字幕亚洲一区| 精品人伦一区二区三区蜜桃网站| 在线观看亚洲区| 国产精品亚洲片夜色在线| 中文字幕日韩精品有码视频| 日韩精品日韩在线观看| 亚洲xxxx做受欧美| 国产精品一区二区女厕厕| 中文字幕综合一区| 色小说视频一区| 日产精品久久久一区二区福利| 国产精品三级在线| 亚洲xxxx妇黄裸体| 日韩大片在线观看视频| 中日韩美女免费视频网址在线观看| 国产ts人妖一区二区三区| 国产精品高潮粉嫩av| 欧美视频裸体精品| 九九久久综合网站| 亚洲最新在线视频| 亚洲aa在线观看| 丝袜一区二区三区| 亚洲第一福利视频| 亚洲色图校园春色| 国产精品伦子伦免费视频| 欧美在线视频观看| 亚洲精品永久免费| 色偷偷av一区二区三区| 欧美成人国产va精品日本一级| 久久精品福利视频| 欧美日韩xxxxx| 色先锋久久影院av| 国产亚洲美女久久| 日韩精品在线视频观看| 国产精品久久久久久五月尺| 精品免费在线视频| 日韩在线观看免费| 欧美成人久久久| 亚洲欧洲xxxx| 国产精品1区2区在线观看| 91久久嫩草影院一区二区| 九九热最新视频//这里只有精品| 一个色综合导航| 91精品国产免费久久久久久| 欧美特黄级在线| 日韩a**中文字幕| 亚洲综合大片69999| 9.1国产丝袜在线观看| 中文字幕日本精品|