程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 淺述SQL Server的聚焦強迫索引查詢條件和Columnstore Index

淺述SQL Server的聚焦強迫索引查詢條件和Columnstore Index

編輯:MSSQL

淺述SQL Server的聚焦強迫索引查詢條件和Columnstore Index。本站提示廣大學習愛好者:(淺述SQL Server的聚焦強迫索引查詢條件和Columnstore Index)文章只能為提供參考,不一定能成為您想要的結果。以下是淺述SQL Server的聚焦強迫索引查詢條件和Columnstore Index正文


前言

本節我們再來交叉講講索引知識,後續再講數據類型中的日期類型,冗長的內容,深化的了解。

強迫索引查詢條件

後面我們也講了一點強迫索引查詢的知識,本節我們再來完好的講述下

(1)SQL Server運用默許索引

USE TSQL2012
GO
SELECT * 
FROM Sales.Orders

上述就不必我再啰嗦了,運用默許主鍵創立的聚集索引來執行查詢執行方案。

(2)SQL Server運用強迫索引

USE TSQL2012
GO
SELECT custid 
FROM Sales.Orders WITH(INDEX(idx_nc_custid))

(3)SQL Server運用內聯查詢條件

USE TSQL2012
GO
SELECT custid 
FROM Sales.Orders WITH (INDEX(idx_nc_custid))
  INNER JOIN Sales.OrderDetails WITH (INDEX(PK_OrderDetails)) 
  ON Sales.OrderDetails.orderid = Sales.Orders.orderid
GO

(4)SQL Server運用OPTION

上述我們第三個運用內聯查詢是比擬好的,同時我們可以在表銜接中末尾運用OPTION來強迫運用索引,由於觸及到表銜接,我們會用到另外一個函數Hints。該Hints用在Join Hints、Query Hints、Table Hints。假如我們指定用Hints很分明將掩蓋查詢方案,由於將SQL Server默許在查詢上會運用最優查詢,此時經過Hints將能夠會掩蓋最優查詢,所以普通不引薦運用,只關於明白知道這樣做會比默許查詢方案會更好的有豐厚經歷的SQL Server運用者能夠會是好的處理方案。但是關於OPTION我們可以運用,OPTION才SQL Server 2008+上才有,上述第三個強迫運用內聯查詢提示可以經過OPTION結合Hints來完成。

USE TSQL2012
GO
SELECT custid 
FROM Sales.Orders AS SO
  INNER JOIN Sales.OrderDetails AS SOD
  ON SOD.orderid = SO.orderid
  OPTION (TABLE HINT(SO,INDEX(idx_nc_custid)),TABLE HINT(SOD, INDEX(PK_OrderDetails)))
GO

上述不引薦運用,除非你明白這樣做比默許運用最優執行查詢方案更好。

Columnstore Index

列存儲索引呈現在SQL Server 2012+上,我們本節復雜說說這個內容,關於大數據方面合理運用列存儲索引可以進步查詢功能,但是經過查找少量材料發如今SQL Server 2012中運用列存儲索引有諸多限制並且還會呈現許多問題,而在SQL Server 2014+上這樣的問題失掉了很大的改善,所以不建議在SQL Server 2012中運用列存儲索引,要運用可以在 SQL Server 2014+上運用。

當我們在SQL Server 2012中創立索引會提示有Columnstore Index和NONCLUSTERED COLUMNSTORE INDEX。在數據庫中存儲數據分為兩種,一種是行存儲,另外一種則是列存儲,行存儲是在頁上存儲一切行數據,而列存儲則是在相反頁上存儲一列一切數據,所以應用列存儲查找數據會愈加快而不是查找整行上的一切數據,當然這也就意味著查找速度的添加而招致的則是硬件驅動配置需求有更高的要求,列存儲中的索引會停止緊縮,所以要運用列存儲需求更大的內存。列存儲索引存儲每一列數據在每一組獨自的磁盤頁中,而不是在每頁上存儲多行,它和行存貯存儲數據區別在於如下圖

這裡關於例子就不再給出,算是做一個根本理解吧。

總結

本節我們次要講了強迫運用索引條件來停止查詢,當關於運用默許創立索引停止查詢方案時覺得不是最優解,可以嘗試運用強迫索引來停止比照找出更好得處理方案。冗長的內容,深化的了解,我們下節再會。

以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,假如有疑問大家可以留言交流,同時也希望多多支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved