MySQL性能优化浅谈

     数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),都需要注意数据操作的性能,下面简要总结下自己工作以来对sql优化的一点心的(请先根据实际情况给必要字段增加索引)。

    1、查询时尽量减少笛卡尔积的大小,特别是在表中数据超百万的大数据情况下。有关系的表之间直接进行join操作,有时候这样虽然是简便但并不是所有情况下都合适的。可以通过子查询等方式,把单表的数据先过出去大部分,然后在进行join的操作。前些时间优化报表,某报表在优化前需要20分钟才能查的出来,经过过滤优化之后8秒就可以搞定。

    2、为查询增加缓存,特别是对一些不经常改动的数据。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,以后的同样查询就会直接用缓存而不再次查询数据库,这样就要求在sql在解释时候最好存在相同的以往已经执行过的sql语句。这个一般对时间作为查询条件的多注意下就可以了。

    3、多使用使用EXPLAIN关键字,分析查询语句或是表结构的性能瓶颈,这也是最基本的。推荐一个toad工具,在返回的结果集旁边可以增加查看EXPLAIN的结果。

    4、如果查询结果只是作为一种存在不存在的判断,或者在查询前可以断定最多有几条,那么加个limit 1/max 会更好些。

    5、不要随便的select * ,即便是用hibernate等orm框架,如果你只需要一个大对象的其中一两个字段,那么最好只取所需的。

    6、建表的时候最好让字段not null ,字符型可用"",数字型可用0来代替,当然特出需要还是要用的。另外如果可以决定字段的长度,那么最好建表的时候就决定,char能搞定的就不要用varchar了。

    7、根据实际情况选着合适的存储引擎,如果没有事务之类的,只是一些历史数据查询,那么选择MyISAM应该是最合适的,利用etl构建的报表系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值