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 建议二:用整型设计索引
比如整型:20150603。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2xldmVyQ29kZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
3 建议三: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语句时间开销
版权声明:
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。