1. 程式人生 > >深入淺出的 SQL Server 查詢優化

深入淺出的 SQL Server 查詢優化

import 抽象 one 圖書 不同的 創建 vertical border server

目前網絡數據庫的應用已經成為最為廣泛的應用之一了,並且關於數據庫的安全性,性能都是企業最為關心的事情。數據庫漸漸成為企業的命脈,優化查詢就解決了每個關於數據庫應用的性能問題,在這裏microsoft sql server又為我們做了些什麽,我們一起關註。

優化查詢我們理解起來貌似很抽象,概括範圍十分的大,關於數據庫這裏的優化查詢其實很簡單,做一個簡單的例子。一個數據包經過無數的路由器達到自己的目的地址,如果在經過每個路由器的時候,路由器都會給他指向最近的路,那麽他抵達的速度也就是最快的。在數據庫中也是一樣,查詢優化就是建立一個一個的路標,就是給這本厚厚的書,寫一份簡單快捷好用的目錄,讓計算機能夠快速的讀取到我們查詢的數據。從這裏可以聯想到,優化查詢就是建立目錄,我們這裏稱之為索引。

通常用圖書館比作數據庫,圖書目錄相當於我們的索引。

給圖書分類,同類的書放在同一個書架中。

給圖書編號,編號是關於書在書架的位置,書架的位置來決定的。

將編號進行統計。

這樣,我們對圖書館就建立了索引,索引的建立,對數據庫的查詢效率的提高並不只是2.3倍,有時候會提高的驚人。

了解到了索引,那麽我們自然而然的會想到關於索引的種種設計方案,不同的查詢索引會對不同的查詢語句進行優化查詢。那麽單單通過鼠標點擊能做到我們希望得到的索引麽?microsoft sql server 已經解決了這種問題。我們通過實際操作來看看如何實現的。這種簡易的操作再一次誇張到了什麽地步!

技術分享

在sql server中打開需要建立索引的表,右鍵索引項目,我們可以看到上圖所顯示的窗口在這裏,如果說我們的應用就如同圖書館一樣簡單快捷,那麽我們可以通過這裏點點鼠標就完成了操作,如果我們是比較復雜的查詢方式呢?或者說有沒有比這個提升效率空間更大的方法呢?這才是我要說的。

往往我們需要的並不是那麽整齊的索引模型,例如我們做網站的應用,數據庫是以什麽樣的方式調用的數據,根據這樣的方式,我們建立相應的索引,我們的需求才會達到。聯想一下這樣的操作應該很繁瑣,要求對SQL查詢的了解也頗深,而這裏微軟的sql server已經為我們準備好了相應的策略,我們以一個簡單的案例做一說明。

首先鍵入我們需要查詢的語句,並查看他的運算符開銷,當然開銷越小,說明我們提高的越大。

技術分享

我們查詢關於這個電話號碼的所有信息,運算符開銷為0.134137,這裏就不截圖了,將鼠標放在索引查找就可以看到。選中我們的查詢語句,點擊分析查詢。

技術分享

點擊左上角的開始分析即可得到相應的分析結果。

技術分享

復制到剪切板之後,我們創建新的查詢,將這些語句復制進去,然後執行。就會自動生成新的索引,而這個索引所提高的效率遠遠超過我們手動創建的簡單索引。

技術分享

我們在來看,查詢速率已經提升了40多倍,很誇張的一個數字。這樣創建的索引,會對所有的類似查詢都會生效,大大提高了數據庫查詢效率,實現了優化查詢。

深入淺出的 SQL Server 查詢優化