电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

淺談SELECT?*會導致查詢效率低的原因

瀏覽:4日期:2023-09-25 20:57:30
目錄前言一、適合SELECT * 的使用場景二、SELECT * 會導致查詢效率低的原因2.1、數據庫引擎的查詢流程2.2、SELECT * 的實際執行過程2.3、使用 SELECT * 查詢語句帶來的不良影響三、優化查詢效率的方法四、總結前言

因為 SELECT * 查詢語句會查詢所有的列和行數據,包括不需要的和重復的列,因此它會占用更多的系統資源,導致查詢效率低下。而且,由于傳輸的數據量大,也會增加網絡傳輸的負擔,降低系統性能。

如果需要查詢所有的列數據,可以使用 LIMIT 關鍵字限制查詢的行數,避免傳輸過多的數據。在實際開發中建議指定列名,避免使用 SELECT * 。

一、適合SELECT * 的使用場景

SELECT * 是 SQL 語句中的一種,用于查詢數據表中所有的列和行。它的使用場景有以下幾種:

初學者的練習:當學習 SQL 語言的初學者沒有掌握如何選擇特定的列時,可以用 SELECT * 來查看完整的數據表結構,這有助于更好地理解數據表的組成。快捷查詢:當需要查詢數據表中所有的數據時,SELECT * 可以快捷地查找到所有的數據,省去了手動輸入列名的麻煩。在某些情況下,使用 SELECT * 可以使 SQL 語句更加簡潔明了,讓代碼更易于維護和修改。

但SELECT *也有一些潛在的風險,比如 SELECT * 可能會導致查詢效率低下、數據冗余和安全問題等。

二、SELECT * 會導致查詢效率低的原因2.1、數據庫引擎的查詢流程

數據庫引擎的查詢流程通常包含以下幾個步驟:

解析 SQL 語句:數據庫引擎先將 SQL 語句解析成內部的執行計劃,包括了查詢哪些數據表、使用哪些索引、如何連接多個數據表等信息。優化查詢計劃:數據庫引擎對內部的執行計劃進行優化,根據查詢的復雜度、數據量和系統資源等因素,選擇最優的執行計劃。執行查詢計劃:數據庫引擎根據執行計劃,通過 I/O 操作讀取數據表的數據,進行數據過濾、排序、分組等操作,最終返回結果集。緩存查詢結果:如果查詢結果集比較大或者查詢頻率較高,數據庫引擎會將查詢結果緩存在內存中,以加速后續的查詢操作。

以MySQL為例:

執行一條select語句時,會經過:

連接器:主要作用是建立連接、管理連接及校驗用戶信息。查詢緩沖:查詢緩沖是以key-value的方式存儲,key就是查詢語句,value就是查詢語句的查詢結果集;如果命中直接返回。注意,MySQL 8.0已經刪除了查詢緩沖。分析器:詞法句法分析生成語法樹。優化器:指定執行計劃,選擇查詢成本最小的計劃。執行器:根據執行計劃,從存儲引擎獲取數據,并返回客戶端。

2.2、SELECT * 的實際執行過程

當使用 SELECT * 查詢語句時,數據庫引擎會將所有的列都查詢出來,包括不需要的和重復的列,然后將這些數據傳輸到客戶端。這個過程會涉及以下幾個步驟:

執行解析 SQL 語句:當數據庫引擎接收到 SELECT * 查詢語句時,會首先解析該語句,確定需要查詢哪些數據表,以及如何連接這些數據表,然后將解析結果保存到內部的執行計劃中。執行查詢計劃:根據執行計劃,數據庫引擎會掃描相應的數據表,讀取所有的列和行數據,然后將這些數據傳輸到客戶端。數據傳輸到客戶端:一旦查詢完成,數據庫引擎將查詢結果集發送到客戶端,包括所有的列和行數據。由于 SELECT * 查詢語句會查詢所有的列和行數據,包括不需要的和重復的列,因此它會占用更多的系統資源,導致查詢效率低下。而且,由于傳輸的數據量大,也會增加網絡傳輸的負擔,降低系統性能。2.3、使用 SELECT * 查詢語句帶來的不良影響查詢效率低下:由于 SELECT * 查詢語句會查詢所有列和行數據,包括不需要的和重復的列,因此會占用更多的系統資源,導致查詢效率低下。數據冗余:使用 SELECT * 查詢語句可能會查詢出不必要的重復數據,增加數據庫的存儲空間,降低數據庫的性能。網絡傳輸負擔增加:由于 SELECT * 查詢語句會傳輸所有的列和行數據,因此會增加網絡傳輸的負擔,降低系統性能。安全問題:如果數據表中包含敏感信息,使用 SELECT * 查詢語句可能會泄露敏感信息,引發安全問題。

所以,建議選擇具體的列進行查詢。如果需要查詢所有的列數據,可以使用 LIMIT 關鍵字限制查詢的行數,避免傳輸過多的數據。

三、優化查詢效率的方法

(1)SELECT 顯式指定字段名。SELECT 顯式指定字段名的優勢:

減少不必要的數據傳輸 。減少內存消耗。提高查詢效率SELECT 顯式指定字段名的注意事項: 掌握數據表結構、避免指定過多的字段 、避免頻繁修改查詢語句。

(2)使用索引。

(3)減少子查詢。

(4)避免使用 OR 操作符。

四、總結

SELECT * 的不良影響:

查詢效率低下;數據冗余;網絡傳輸負擔增加;安全問題。

顯式指定字段名的優勢:

查詢效率更高;減少數據冗余;網絡傳輸負擔減少;更好的代碼可讀性;提高安全性。

優化查詢效率的方法:

顯式指定需要查詢的字段名;使用 LIMIT 關鍵字限制查詢的行數;優化索引,提高查詢效率;避免在 WHERE 子句中使用函數或表達式,以免影響查詢效率;避免使用子查詢,以免引起性能問題;合理使用 JOIN,避免查詢結果集過大。

到此這篇關于淺談SELECT *會導致查詢效率低的原因的文章就介紹到這了,更多相關SELECT *效率低內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: MsSQL 數據庫
主站蜘蛛池模板: 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 钢骨架轻型板_膨石轻型板_钢骨架轻型板价格_恒道新材料 | 水热合成反应釜-防爆高压消解罐-西安常仪仪器设备有限公司 | 在线浊度仪_悬浮物污泥浓度计_超声波泥位计_污泥界面仪_泥水界面仪-无锡蓝拓仪表科技有限公司 | 乐之康护 - 专业护工服务平台,提供医院陪护-居家照护-居家康复 | 仓储笼_金属箱租赁_循环包装_铁网箱_蝴蝶笼租赁_酷龙仓储笼租赁 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 威廉希尔WilliamHill·足球(中国)体育官方网站 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 上海宿田自动化设备有限公司-双面/平面/单面贴标机 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 纯水设备_苏州皙全超纯水设备水处理设备生产厂家 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 华溶溶出仪-Memmert稳定箱-上海协烁仪器科技有限公司 | 河南新乡德诚生产厂家主营震动筛,振动筛设备,筛机,塑料震动筛选机 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 冷水机-工业冷水机-冷水机组-欧科隆品牌保障 | 煤棒机_增碳剂颗粒机_活性炭颗粒机_木炭粉成型机-巩义市老城振华机械厂 | 煤矿人员精确定位系统_矿用无线通信系统_煤矿广播系统 | 烟台螺纹,烟台H型钢,烟台钢材,烟台角钢-烟台市正丰金属材料有限公司 | 哈尔滨京科脑康神经内科医院-哈尔滨治疗头痛医院-哈尔滨治疗癫痫康复医院 | 有声小说,听书,听小说资源库-听世界网 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 仪器仪表网 - 永久免费的b2b电子商务平台| 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 电销卡_稳定企业大语音卡-归属地可选-世纪通信 | 超声波流量计_流量标准装置生产厂家 _河南盛天精密测控 | 裹包机|裹膜机|缠膜机|绕膜机-上海晏陵智能设备有限公司 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 深圳天际源广告-形象堆头,企业文化墙,喷绘,门头招牌设计制作专家 | 皮带式输送机械|链板式输送机|不锈钢输送机|网带输送机械设备——青岛鸿儒机械有限公司 | 滑石粉,滑石粉厂家,超细滑石粉-莱州圣凯滑石有限公司 | 【北京写字楼出租_写字楼租赁_办公室出租网/出售】-远行地产官网 | 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 武汉画册印刷厂家-企业画册印刷-画册设计印刷制作-宣传画册印刷公司 - 武汉泽雅印刷厂 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 影像测量仪_三坐标测量机_一键式二次元_全自动影像测量仪-广东妙机精密科技股份有限公司 |