除了不要 SELECT * ,数据库还有哪些技巧
点击上方“方志朋”,选择“设为星标”
回复”666“获取新整理的面试资料
来源:AIOps
应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。
那么如何提高数据库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调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。
热门内容:
接私活必备的10个开源项目!
面试环节:在浏览器输入 URL 回车之后发生了什么?(超详细版)
让 Spring Boot 启动更快一点
一次非常有意思的 SQL 优化经历:从 30248.271s 到 0.001s
进程与线程的一个简单解释
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
除了不要 SELECT * ,数据库还有哪些技巧相关推荐
- 38个MySQL数据库的小技巧
1.如何快速掌握MySQL? 培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外. 夯实基础 计算机领域的技术非常强调基础,刚开始学习可能还 ...
- Oracle数据库SqlLoad常用技巧总结word版
<Oracle数据库SqlLoad常用技巧总结word版> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731207.html
- 数据库SQL,技巧篇
三.技巧 1.1=1,1=2的使用,在SQL语句组合时用的较多 "where 1=1" 是表示选择全部 "where 1=2"全部不选, 如: if @s ...
- mysql可扩展数据库_五大技巧提高MySQL可扩展性
当网站上部署小型MySQL数据库时,面对少量访客的情况下,快慢的查询都足够快,能够提供足够的性能.因此,没有必要进一步的优化查询.然而,随着大量数据(几十万行量级)的出现,网站大量游客访问时,速度在毫 ...
- SQL数据库不用SQL语句能显示全表的内容_详解mysql数据库sql优化技巧总结
概述 关于SQL优化的教程很多,但是比较杂乱.所以抽空整理了一下,也写出来跟大家分享一下.以下主要针对MySQL数据库,Oracle数据库也可以参考. 优化技巧总结 1.建索引 对查询进行优化,要尽量 ...
- 数据库设计规范与技巧
一.数据库设计过程 数据库技术是信息资源管理最有效的手段. 数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求. 数据库设计 ...
- 14个数据库的设计技巧 (来自Blogcn中我的窝)
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...
- java将图片上传数据库_〔技巧实例〕轻松实现将上传图片到数据库
很久就想自己写一写程序了,不过由于赖就不想写我,今天刚好有空,所以写了这个小小的程序很容易一看就知道的,不多说了就此开始: 我们做一个上传的.数据据库的字段就id自动编号 big 字段类型是 OLE ...
- 掌握MySQL数据库这些优化技巧,事半功倍!
一个成熟的数据库架构并不是一开始设计就具备高可用.高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善.这篇文章主要谈谈MySQL数据库在发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大 ...
最新文章
- Python制作抽奖系统
- Redis3.0 配置文件说明
- python多久能学会爬虫-python一般学多久
- 英国税务机构HMRC被指收集了510万英国人的语音记录
- 剑网三缘起,葱姜蒜也能卖?欺负新玩家被批评,但说明游戏很自由
- c++ STL find search
- 在一个字符串中找到第一个只出现一次的字符
- 开源开放 | 开源立体化漏洞情报知识图谱(四维创智)
- java gzipoutputstream_java – GZIPInputStream逐行读取
- 李彦宏:属于百度的日子终于来了,曾与Facebook谈建合资公司
- 大学课程为什么不绕过51单片机直接搞STM32来做比赛
- 数字滤波器设计工具_数字设计师和代理商的资源和工具
- 【数理方程】傅里叶级数
- abaqus python提取楼层剪力_用Python提取ABAQUS中节点集合的反力
- 服务器技术的发展方向
- 科技爱好者周刊(第 194 期):悲观者正确,乐观者成功
- 淘淘商城系列(一)—— 电商行业的背景介绍(一)
- deepin系统怎么分区?deepin系统分区方法介绍
- PDF怎样转换成JPG图片 PDF转换为JPG图片教程
- Flutter | 和小老弟一起学资源管理