SlideShare a Scribd company logo
淺談開發中的效能調校
T-SQL篇
周妙謙
http://chousmiao.wordpress.com/
7/19/2013 T-SQL Enhancements in SQL Server 2012
Agenda
 問題
 目前作法
 範例介紹
 經驗分享
7/19/2013 | T-SQL Enhancements in SQL Server 20122 |
問題:網頁又跑不出來了
7/19/2013 | T-SQL Enhancements in SQL Server 20123 |
目前作法
7/19/2013 | T-SQL Enhancements in SQL Server 20124 |
 錄Profiler
 尋找出問題的Stored Procedure
 開始針對該Stored Procedure去查詢哪一句語
句花了最久的時間
範例介紹-使用過多的資料表join
7/19/2013 | T-SQL Enhancements in SQL Server 2012
 在一段陳述句中使用過多的join時,可以將其
拆成多段陳述句,先into到(#)Temp Table,同
時可以在Temp Table上建立適當的索引。這可
以避免過大的Working Table,並找出哪一段
join較慢
5 |
範例介紹-過度使用User Function
7/19/2013 | T-SQL Enhancements in SQL Server 20126 |
 在SELECT欄位時使用函數,會讓每一筆資料再
去呼叫一次函數(如果符合記錄很多筆時,它還
滿可怕的)
 函數盡量不要在Where陳述句的欄位上使用,在
Where條件式的欄位上使用函數時,該陳述句不
能適當的使用索引
7/19/2013 | T-SQL Enhancements in SQL Server 20127 |
經驗分享
7/19/2013 | T-SQL Enhancements in SQL Server 20128 |
使用子查詢或JOIN的時機?
 子查詢:撰寫程式方便
 INNER JOIN
 了解執行計畫的差異
使用OR運算子必須特別小心
 「所有的」條件都有索引,才能提升查詢速度
 只要有一個條件 (欄位) 沒有可用的索引,則
其他所有的條件都有索引也沒用,會造成整
Table Scan或Index Scan
7/19/2013 | T-SQL Enhancements in SQL Server 20129 |
其他
 DISTINCT、ORDER BY 語法會讓資料庫做額
外的計算
 UNION的使用,沒有剔除重複資料的需求,
使用 UNION ALL 會比 UNION 更佳
 存取資料庫物件時,使用兩節式名稱。
 遞迴資料可以考慮使用CTE語法撰寫,避免
Cursor
7/19/2013 | T-SQL Enhancements in SQL Server 201210 |
使用索引的搜尋條件
 可以使用索引的搜尋條件
=
>
> =
<
< =
Between
Like ‘xx%’
 無法使用索引的搜尋條件
<>
!=
!>
!<
OR
NOT IN
(可以考慮是否以Except 改寫,
觀察執行計畫是否改善效能)
NOT LIKE IN
NOT EXIST
LIKE ‘%xx’
7/19/2013 | T-SQL Enhancements in SQL Server 201211 |
結論
 一定會發生,還會再發生,一直發生
 改商業需求、實作邏輯、資料庫設計、交易鎖
定、索引、硬體
 不要傳回大量資料、要有快取、包裝資料存取
物件以保證交易與錯誤處理
 Code Review、定期檢視索引的使用狀況,或
是否有系統建議索引
7/19/2013 | T-SQL Enhancements in SQL Server 201212 |
7/19/2013 | T-SQL Enhancements in SQL Server 201213 |

More Related Content

Similar to SQL PASS Taiwan 七月份聚會-3

资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈yiditushe
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
posestudio
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍Zelin Wang
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
Dahui Feng
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年yp_fangdong
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
quick_orm 简介
quick_orm 简介quick_orm 简介
quick_orm 简介
tyler4long
 
吕潇 星环科技大数据技术探索与应用实践
吕潇 星环科技大数据技术探索与应用实践吕潇 星环科技大数据技术探索与应用实践
吕潇 星环科技大数据技术探索与应用实践
jins0618
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
mysqlops
 

Similar to SQL PASS Taiwan 七月份聚會-3 (9)

资身Dba经验谈
资身Dba经验谈资身Dba经验谈
资身Dba经验谈
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
 
01 orm概述及持久化介绍
01 orm概述及持久化介绍01 orm概述及持久化介绍
01 orm概述及持久化介绍
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
 
Taobao数据库这5年
Taobao数据库这5年Taobao数据库这5年
Taobao数据库这5年
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
quick_orm 简介
quick_orm 简介quick_orm 简介
quick_orm 简介
 
吕潇 星环科技大数据技术探索与应用实践
吕潇 星环科技大数据技术探索与应用实践吕潇 星环科技大数据技术探索与应用实践
吕潇 星环科技大数据技术探索与应用实践
 
MySQL数据库生产环境维护
MySQL数据库生产环境维护MySQL数据库生产环境维护
MySQL数据库生产环境维护
 

SQL PASS Taiwan 七月份聚會-3