SQL Server預存程序及進階應用程式

來源:互聯網
上載者:User

 

今天主要探討下SQL Server預存程序的應用及最佳化方案。

     預存程序:由於本人之前的一篇文章對預存程序簡單的做了概述,http://www.cnblogs.com/weilengdeyu/archive/2012/12/26/2834625.html這裡就不再贅述了。今天來看下預存程序的進階應用程式。

首先來看下預存程序能夠包含哪些內容:

     可以看出,預存程序不僅包含單個select語句,還可以包含select語句塊,例如Case When,同樣還可以包含邏輯控制語句,如if—else等。

注意:預存程序中也可以包含insert,update和delete語句。

然後我們來看下擴充預存程序xp_cmdshell的用法

案例:啟用xp_cmdshell

    SQL  Server2000中啟用擴充預存程序:

  Use master

  Exec sp_addextendedproc xp_cmdshell,'xplog70.dll'

  Go

   SQL  Server 2005或SQL Server 2008啟用xp_cmdshell

  sp_configure 'xp_cmdshell',1

  go

  reconfigure --讓sp_configure立即生效

  go

  --開啟進階選項

  sp_configure 'show advanced options',1

  go

  reconfigure

  go

     說明:伺服器選項總共有36個,預設情況下,sp_configure預存程序只顯示其中的10個,顯示結果中不包含進階選項,而且所有新的SQL Server配置選項都不會出現在這個精簡的清單中。然而,我們可以使用show advanced options命令參數讓SQL Server顯示出所有選項。

  案例:禁用/刪除xp_cmdshell

    Sql server 2000刪除擴充預存程序

    --刪除擴充預存程序

    use master

    exec sp_dropextendedproc 'xp_cmdshell'

    go

  提高預存程序效能的方法

    01,使用 set nocount on

    文法 
    SET NOCOUNT { ON | OFF } 

    注釋 
    當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數。 

    當 SET NOCOUNT 為 ON 時,將不給用戶端發送預存程序中的每個語句的 DONE_IN_PROC 資訊。當使用 Microsoft SQL Server 提供的工具 + 生產力執行查詢時,在        Transact-SQL 語句(如 SELECT、INSERT、 UPDATE 和 DELETE)結束時將不會在查詢結果中顯示"nn rows affected"。 

  02,減少選擇性參數

  03,最佳化SQL語句

    001,避免頻繁訪問同一張或多張表

    002,盡量避免大量事務操作

    003,盡量避免使用遊標

    004,注意where語句寫法

       必須考慮語句順序,應該根據索引順序、範圍大小來確定條件子句的前後順序,儘可能的讓欄位順序與索引順序相一致,範圍從大到小。

    005,盡量使用exists代替select count()判斷是否存在記錄,count函數只有在統計表中所有行數時使用,而且count(1)比count(*)更有效率。

    006,注意表之間串連的資料類型

    007,先寫DDL,再寫DML

    008,合理使用索引

      要注意索引的維護,周期性重建索引,重新編譯預存程序。

    009,合理使用tempdb系統資料表

      I,盡量避免使用distinct、order by、group
by、having、join語句

      II,避免頻繁建立和刪除暫存資料表

      III,暫存資料表中插入資料過大,可使用select into代替create table

      IV,使用了暫存資料表,要在預存程序最後顯式刪除

      V,避免使用大暫存資料表與其他大資料量表的連結查詢和修改

  Sqlprofiler的使用

    通過Sqlprofiler可以檢測到任何SQL  server語句的執行,協助我們分析SQL語句的最終執行過程。

    使用方式:開啟工具→SQL Server Profiler如

         

點擊串連,出現介面

    

點擊運行

 

該介面可以查看SQL Server的跟蹤資訊。

 

今天暫時探討到這裡,希望能給大家帶來協助!

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.