深入淺出的SQL server 查詢優化

發表於2015-10-07

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

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

  • 通常用圖書館比作資料庫,圖書目錄相當於我們的索引。
  • 給圖書分類,同類的書放在同一個書架中。
  • 給圖書編號,編號是關於書在書架的位置,書架的位置來決定的。
  • 將編號進行統計。

這樣,我們對圖書館就建立了索引,索引的建立,對資料庫的查詢效率的提高並不只是2.3倍,有時候會提高的驚人。
瞭解到了索引,那麼我們自然而然的會想到關於索引的種種設計方案,不同的查詢索引會對不同的查詢語句進行優化查詢。那麼單單通過滑鼠點選能做到我們希望得到的索引麼?microsoft sql server 已經解決了這種問題。我們通過實際操作來看看如何實現的。這種簡易的操作再一次誇張到了什麼地步!

檢視大圖

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

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

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

檢視大圖

我們查詢關於這個電話號碼的所有資訊,運算子開銷為0.134137,這裡就不截圖了,將滑鼠放在索引查詢就可以看到。選中我們的查詢語句,點選分析查詢。

檢視大圖

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

檢視大圖

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

檢視大圖

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

相關文章