SQL優化:不查詢多余的列和行
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
示例數據庫可以在閱讀原文處獲取。下面使用的示例是AdventureWorks2012的備份包,小伙伴下載后還原即可。記得數據庫要是高版本的才能還原成功,我使用的數據庫是SQL Server 2016版本的。 1.不查詢多余的列 查詢過程中經常為了省事,而直接使用*來代替所有的列,好處是不需要寫明列。壞處就是遇到列比較多的表查詢效率就大大折扣了。例如:
我們執行一下可以看到如下信息: 上面的相關信息我給大家解讀一下: 掃描計數:索引或表掃描次數 邏輯讀取:數據緩存中讀取的頁數 物理讀取:從磁盤中讀取的頁數 預讀:查詢過程中,從磁盤放入緩存的頁數 lob邏輯讀取:從數據緩存中讀取,image,text,ntext或大型數據的頁數 lob物理讀取:從磁盤中讀取,image,text,ntext或大型數據的頁數 lob預讀:查詢過程中,從磁盤放入緩存的image,text,ntext或大型數據的頁數 語句的CPU時間分編譯階段和執行階段。 CPU時間是指:執行語句的時間 占用時間是指:從磁盤讀取數據再處理總的使用時間 編譯階段: SQL Server 分析和編譯時間: 執行階段: SQL Server 執行時間: 這些信息我們以后都會經常看到的,這是判斷一個查詢語句最直觀的方式。 Q:上面的消息界面是怎么出來的呢? A:點擊菜單欄的查詢——查詢選項...——高級,將SET STATISTICS TIME和SET STATISTICS IO都勾選上就可以了 我們再單獨查詢一列看會怎么樣?例如:
我們執行一下可以看到如下信息: 通過上面的時間對比我們就可以清楚的看到:將列名明確的列出,不顯示不相關的列效率有很大的提升。 這里就是大家經常看到的一條優化建議:不要直接使用*進行查詢,而只查詢需要的列。 2.不查詢多余的行
我們執行一下可以看到如下信息: 所占用的時間成倍的減少,效果顯而易見。
我們執行一下可以看到如下信息: 可能有些同學對DISTINCT關鍵字有不同的看發,稍后我們根據具體情況再逐一給大家進行分析。 今天的課就講到這里,小伙伴可以動手嘗試一下。 閱讀原文:原文鏈接 該文章在 2025/6/23 12:51:27 編輯過 |
關鍵字查詢
相關文章
正在查詢... |