Mysql写出高质量的sql语句的几点建议

CleverCode在实际的工作也写过一些低效率的sql语句。这些语句会给数据库带来很大的压力,最主要的表现就是sql语句运行慢,后来逐渐的去优化和尝试。总结了一些高质量的sql语句的写法。这里CleverCode总结一下分享给大家。

【 CleverCode发表在csdn博客中的原创作品,请勿转载,原创地址:http://blog.csdn.net/clevercode/article/details/46341147

1 建议一:尽量避免在列上运算

尽量避免在列上运算,这样会导致索引失效。

1.1 日期运算

优化前:

select * from system_user where date(createtime) >= '2015-06-01'

优化后:

select * from system_user where createtime >= '2015-06-01'

1.2 加,减,乘,除

优化前:

select * from system_user where age + 10 >= 20

优化后:

select * from system_user where age >= 10

2 建议二:用整型设计索引

用整型设计的索引,占用的字节少,相对与字符串索引要快的多。特别是创建主键索引和唯一索引的时候。

1)设计日期时候,建议用int取代char(8)。例如整型:20150603。

2)设计IP时候可以用bigint把IP转化为长整型存储。

3 建议三:join时,使用小结果集驱动大结果集

使用join的时候,应该尽量让小结果集驱动大的结果集,把复杂的join查询拆分成多个query。因为join多个表的时候,可能会有表的锁定和阻塞。如果大结果集非常大,而且被锁了,那么这个语句会一直等待。这个也是新手常犯的一个错误!

优化前:

select
	*
from table_a a
left join table_b b
	on a.id = b.id
left join table_c c
	on a.id = c.id
where a.id > 100
	and b.id < 200

优化后:

select
	*
from (
	select
		*
	from table_a
	where id > 100
) a
left join(
	select
		*
	from table_b
	where id < 200
)b
	on a.id = b.id
left join table_c
	on a.id = c.id

4 建议四:仅列出需要查询的字段

仅列出需要查询的字段,新手一般都查询的时候都是*,其实这样不好。这对速度不会有明显的影响,主要考虑的是节省内存。

优化前:

select * from system_user where age > 10

优化后:

select username,email from system_user where age > 10

5 建议五:使用批量插入节省交互

优化前:

insert into system_user(username,passwd) values('test1','123456')
insert into system_user(username,passwd) values('test2','123456')
insert into system_user(username,passwd) values('test3','123456')

优化后:

insert into system_user(username,passwd) values('test1','123456'),('test2','123456'),('test3','123456')

6 建议六:多习惯使用explain分析sql语句

7 建议七:多使用profiling分析sql语句时间开销

profiling的使用请查看我另外一篇博客,《Mysql使用profiling分析慢sql语句的原因》:http://blog.csdn.net/clevercode/article/details/46310835

版权声明:

1)原创作品,出自"CleverCode的博客",请勿转载,否则追究版权法律责任。

2)原创地址:http://blog.csdn.net/clevercode/article/details/46341147

3)分类地址(Mysql数据库总结):http://blog.csdn.net/clevercode/article/category/3262205(博客持续增加,关注请收藏)

4)欢迎大家关注我博客更多的精彩内容:http://blog.csdn.net/CleverCode

时间: 2024-11-10 20:24:00

Mysql写出高质量的sql语句的几点建议的相关文章

4年前的随笔---写出高质量程序的要点

从1990年開始敲代码.到如今已经快20年了.总结出写出高质量程序的几个要点: - 1.開始写之前思路越清晰完整越好. - 2.写的过程中代码一定要规范一致,这种代码便于维护和改动.这个规范一致性包括名称.格式.算法等.- 3.发现一处错误,马上回忆有没有可能其他地方具有相同的错误(假设你遵循第2条.就能非常快找到). - 4.多用ASSERT,在我的代码里面,这条语句至少占领了程序总量的1/10. - 5.每写完一段后至少重复看3遍.非常多BUG是非常难用调试器找出来的. - 通过遵循以上规则

如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛

    如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客.看起来很唯心,但这就是事实.有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单.就是不停地训练,慢慢地,你自己就能找出规律和技巧.所以,要写出高质量的技术博客,首先要解决为什么要写的问题. 为什么要写 我一直很喜欢的一个学习方法是 Learning by teaching 一个课题,如果你能给不懂的人解释清楚,说明你对这个课题的理解足够深入.把一个课题展开来写,你可能会发现某些方面你还写不清楚,这往往说明你

10个编程小技巧,教你写出高质量代码!

你会写代码吗你会写高质量代码吗你知道怎么写高质量代码吗不要一上来就开始写代码想清楚,再动手今天,分享10个写代码的小技巧教你写出高质量代码↓↓↓ 1.重构思维模式 不要一上来就开始写代码,要掌握尽量多的重构方法,重构思维方式,掌握重构并不一定是要对原来代码的重构,而是让自己在操作之前就想好该怎么去进行. 2.搞清需求再动手 看到需求之后,肯定多多少少会有一些问题,或是理解上的错误,或是功能实现上的问题,这时,必须要交流清楚,否则,后续将会有更多问题. 3.文档也要写 可能不少人觉得文档没人看,写

小白程序员怎么由量变到质变写出高质量代码

小白程序员怎么由量变到质变写出高质量代码?很多老程序员从事开发多年,有这样一种感觉,查看一些开源项目,如Spring.Apache Common等源码是一件赏心悦目的事情,究其原因,无外两点: 1.代码质量非常高; 2.命名特别规范: 要写高质量的代码,不是一件容易的事,需要长年累月的锻炼,是一个量变到质变的过程,但要写好命名,只需要有比较好的英语语法基础和一种自我意识即可轻松达到. 1.切忌使用没有任何意义的英语字母进行命名. 2.切忌使用拼音,甚至是拼音首字母组合. 3.要使用英文,而且要使

如何写出高质量的JavaScript代码

优秀的Stoyan Stefanov在他的新书中(<Javascript Patterns>)介绍了很多编写高质量代码的技巧,比如避免使用全局变量,使用单一的var关键字,循环式预存长度等等. 这篇文章不仅仅从代码本身来考虑如何优化编码,也从代码的设计阶段来考虑,包括书写API文档,同事的review,使用JSLint.这些习惯都能帮助你编写更加高质量的.更易于理解的.可维护的代码(让你的代码在多年之后仍使你引以为傲). 编写可维护的代码 软件的BUG修复需要花费大量的精力.尤其当代码已经发布

如何写出高质量的代码 data 组件 函数

今天在将以前文件上传的地方全部 改为新的文件上传的api. 在改动的过程中,发现代码有很多不合理的地方 在改的时候,因此也是非常的痛苦的哈. 比如说在data中我有太多的flag标识.俩控制元素的显示和隐藏了.真的是太多了 这样要不得,虽然代码是可以正常的跑的.但是呢?? 以后不利于他人自己以后的维护.这一点我一定赶紧过来. 1在data中不要写太多的公共数据 如何解决了: 能局部显示的,就局部显示吧. 是不是非要data中的数据取显示了. 2学会写局部组件和公共组件 我写的代码还有一个问题 h

怎样才能写出高质量的伪原创,并且排名在前?

1.等价替换法 ①.文字排序法:如随便拿本站的这篇文章"编辑写伪原创文章的五大技巧"如何做等价替换法?通过近义词以及打乱标题关键词顺序来达到等价替换,你可以改成"编辑五大技巧写伪原创文章","五大技巧帮助编辑写伪原创文章"你看标题巧妙改变了,但意思却没变,这就是等价替换法. ②.数字替换法:比如标题:五大伪原创技巧,你可以进行适当的去除几个自己认为不是伪原创技巧的,或者增加一些伪原创技巧,都可以,至少你可以让搜索引擎至少认为你的标题就别树一帜. 

如何组织css,写出高质量的css代码

!如何组织css一:css的API 属于基础部分,这部分的能力用“对”和“错”来评判. 比如说把文字设置为红色,只能用color:red:这种写法是对的,其他任何写法都是错的. 二:css框架 不能用“对”和“错”来评判,我们会用“好”.“比较好”.“很烂”.“非常棒”这样的字眼来评判. 按功能划分:控制字体的css集中在font.css文件里. 控制颜色的css集中在coloor.css文件里. 控制布局的css集中在layout.css文件里. 按区块划分:将头部的css放在head.css

一段高质量的SQL从问问题开始(笔记)

首先SQL书写的目的是为了解决问题,因此只有明白了要解决的问题,才能写出更加高效的SQL语句,才能优雅的解决问题,获得更多的快乐! 在写一个SQL语句的时候不妨像优化器一样思考,问自己以下的这些问题,相信长时间的积累的结果一定可以让自己的SQL变得高效并且优雅 1)为了获取所需要的全部数据需要那些表? 2)其中有表是分区的吗?如果有,分区是如何定义的呢? 3)每张表都有哪些列? 4)每张表中可以引用的索引有哪些? 5)每张表以及其中的列和索引的统计信息都是什么? 6)某些列上有直方图信息吗?(这