LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL優化:不查詢多余的列和行

admin
2025年6月22日 0:16 本文熱度 125

示例數據庫可以在閱讀原文處獲取。下面使用的示例是AdventureWorks2012的備份包,小伙伴下載后還原即可。記得數據庫要是高版本的才能還原成功,我使用的數據庫是SQL Server 2016版本的。

1.不查詢多余的列

查詢過程中經常為了省事,而直接使用*來代替所有的列,好處是不需要寫明列。壞處就是遇到列比較多的表查詢效率就大大折扣了。例如:

SELECT * FROM [Sales].[SalesOrderDetail];

我們執行一下可以看到如下信息:

上面的相關信息我給大家解讀一下:

掃描計數:索引或表掃描次數

邏輯讀取:數據緩存中讀取的頁數

物理讀取:從磁盤中讀取的頁數

預讀:查詢過程中,從磁盤放入緩存的頁數

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都勾選上就可以了



我們再單獨查詢一列看會怎么樣?例如:

SELECT UnitPrice FROM [Sales].[SalesOrderDetail];

我們執行一下可以看到如下信息:

通過上面的時間對比我們就可以清楚的看到:將列名明確的列出,不顯示不相關的列效率有很大的提升。

這里就是大家經常看到的一條優化建議:不要直接使用*進行查詢,而只查詢需要的列。


2.不查詢多余的行

  • 在查詢的時候使用WHERE關鍵字可以很好的過濾掉不需要的行。這也是提高查詢效率的一種方式,其實這才是WHERE關鍵字存在的意義。例如:

SELECT UnitPrice FROM [Sales].[SalesOrderDetail] WHERE UnitPrice>1000;

我們執行一下可以看到如下信息:

所占用的時間成倍的減少,效果顯而易見。

  • 使用DISTINCT關鍵字減少多余重復的行。例如:

SELECT DISTINCT UnitPrice FROM [Sales].[SalesOrderDetail] WHERE UnitPrice>1000;

我們執行一下可以看到如下信息:

可能有些同學對DISTINCT關鍵字有不同的看發,稍后我們根據具體情況再逐一給大家進行分析。

今天的課就講到這里,小伙伴可以動手嘗試一下。


——End——


閱讀原文:原文鏈接


該文章在 2025/6/23 12:51:27 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
亚洲激情在线观看AV | 亚洲欧洲国产综合另类国码 | 思思热在线视频在线 | 亚洲欧美日韩中文字幕在线一区 | 中文字幕思思久久96 | 亚洲欧美日韩精品专区在线插放免费 |