程序员,你还在 Select * 吗?
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。
那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。
程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。
技巧1 比较运算符能用 “=”就不用“<>”
“=”增加了索引的使用几率。
技巧2 明知只有一条查询结果,那请使用 “LIMIT 1”
“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。
技巧3 为列选择合适的数据类型
能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盘和内存消耗越小越好嘛。
技巧4 将大的DELETE,UPDATE or INSERT 查询变成多个小查询
能写一个几十行、几百行的SQL语句是不是显得逼格很高?然而,为了达到更好的性能以及更好的数据控制,你可以将他们变成多个小查询。
技巧5 使用UNION ALL 代替 UNION,如果结果集允许重复的话
因为 UNION ALL 不去重,效率高于 UNION。
技巧6 为获得相同结果集的多次执行,请保持SQL语句前后一致
这样做的目的是为了充分利用查询缓冲。
比如根据地域和产品id查询产品价格,第一次使用了:
那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和region位置调换顺序。
技巧7 尽量避免使用 “SELECT *”
如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。
技巧8 WHERE 子句里面的列尽量被索引
只是“尽量”哦,并不是说所有的列。因地制宜,根据实际情况进行调整,因为有时索引太多也会降低性能。
技巧9 JOIN 子句里面的列尽量被索引
同样只是“尽量”哦,并不是说所有的列。
技巧10 ORDER BY 的列尽量被索引
ORDER BY的列如果被索引,性能也会更好。
技巧11 使用 LIMIT 实现分页逻辑
不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。
技巧12 使用 EXPLAIN 关键字去查看执行计划
EXPLAIN 可以检查索引使用情况以及扫描的行。
其他
SQL调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。
转载于:https://www.cnblogs.com/CQqf2019/p/11187128.html
程序员,你还在 Select * 吗?相关推荐
- 2030年,程序员工资还能达到现在的水平吗?
背景: 汇总了下老王在其他平台的原创回复,欢迎关注老王原创公众号[软件老王],关注不迷路. 1.2030年,程序员工资还能达到现在的水平吗? 老王观点: (1)认为行业的工资水平是跟国家经济这个大池子 ...
- 想做程序员但还在迷惘和摸索吗?
自从上大学选择了计算机专业后,我就深深地热爱上了软件开发,并已经立志把自己的毕生精力都奉献给软件开发事业.一直以来,我都充满了激情去学习,去写程序,去接受新的知识和技术.几年来,付出很多,收获很多,也 ...
- 女程序员婚前买房给父母住,婚后要求男程序员一起还房贷!男程序员怀疑婚姻!...
每个人的人生中都会面临婚姻这一个重大课题,不管是讲诗书礼仪的大儒,还是市井的籍籍无名之辈,只要谈到结婚,都是一个无比现实的问题.爱情牵涉的物质利益甚少,可婚姻不行,过日子嘛,总需要些柴米油盐的烟火气, ...
- 996.ICU 下被过度消费的程序员,还配享受生活吗?
"程序员哦?就智商挺高情商有限,薪水奇高还没啥生活品质的那个?" 3 月底即引爆 GitHub 的程序员自救项目"996.ICU"从最初的一纸"抗议书 ...
- 身为程序员月薪还不到50k?你们好菜,我已经拿着阿里成长笔记实现财富自由了
前言 初中级程序员一般有一定的编程经验,了解项目流程,但有可能不能够自己独立完成项目或只知道一种语言,项目经验较少等. 那应该如何提升自己呢? 第一,多看视频.要时常看视频.因为这是对某个方面知识快速 ...
- 什么?作为程序员你还不知道人工智能搜索引擎?
作者:明明如月学长, CSDN 博客专家,蚂蚁集团高级 Java 工程师,<性能优化方法论>作者.<解锁大厂思维:剖析<阿里巴巴Java开发手册>>.<再学经 ...
- 程序员面试还不敢要高薪资?程序员面试谈薪资的6大技巧分享,最全Java架构师技能图谱
提起薪资,我们作为求职者都想多要点,但怎么巧妙的要到手,这有时需要聊天技巧: **面试官: 在我们这儿工作,您希望有什么样的薪资待遇?**提示:了解该公司所在地区.所属行业.公司规模等信息,你的薪水要 ...
- 学计算机专业,但是不想做程序员,还能做什么呢?
我本科学得是通信,毕业以后,家里供我到国外读计算机专业,父母都是工薪阶层,加上新疆的工资又不高,不仅要支付学费还要负担我的生活费,所以我很能体谅父母的艰辛. 第一学期,我学得很用功,开学第一个月的编程 ...
- 除了 P 站,程序员居然还喜欢上这些网站?快来摸鱼呀!
说到p站,估计不知道的人已经很少了,除了p站还有哪些站?应该很多人思考过这个问题了 二次元可是有ABCDEFGHJKNMT站-等等诸多圣地的!外面的世界很精彩,别抱着一个站啃了~ 1.A站 Acfun ...
- 33岁的程序员,还在一线编码,该怎么办?
网友说 很多程序员并不是为了编程而编程,为什么这么说?因为国内的程序员可以大概分为以下几类: 1. 高薪程序员:仅仅是为了生活,而不是编程: 2. 过渡程序员:失足青年的一个人生跳板: 3. 兴趣程序 ...
最新文章
- DB2的一些精品文章地址
- Delphi编程禁止用户关闭操作系统
- 校验功能算eo还是ilf_如何区分ILF和EIF?
- vue 引用src中的文件_Vue中引用第三方JS文件
- android dumpsys命令使用
- 安装Reporting Service即时报表模型
- 五款PC端小说阅读器 readbook、非常酷阅读器、iSilo、AlReader、haalireader
- (Word论文插入高清图片)软件设置教程
- AECC2019免费下载After Effects CC 2019中文完整破解版免费下载与安装教程...
- Nuvoton M0518 之 记录数据到LDROM,数据掉电不丢失的方式
- scipy库 signal 导入_Python scipy.signal方法代码示例
- PDF/OCR识别提取工具:Readiris Pro 17 for Mac
- 高精度地图lanelet2或opendrive转vectormap
- Socks5代理和IP代理
- 王牌流量爆刷器 流量提升工具 网站刷新 增加浏览量 王牌软件
- Synchronized的原理(C++层)
- 2022年武汉市首席技师、技术能手评选和技能大师工作室建设项目申报条件、流程
- C库函数 ——strstr、strtok的详解
- 设计图形用户界面的原则
- 浅谈Batch(批次合并)