数据库性能优化学习

来源:互联网 发布:我的世界枪械手机版js 编辑:程序博客网 时间:2024/05/29 01:54

数据库的性能优化不仅仅是DBA的事情,我们程序员也是需要了解的。更何况不是每个公司都是有DBA的。这就需要我们程序员更多的注意。

现在的应用基本上都是关联到对数据库的操作,对于高并发的应用对数据库的应用就更为重要。数据库的优化主要包括数据库表的设计和sql的优化。

以下是学习和应用中的总结

数据库设计方面:

1、数据表字段类型能用数值型就用数字型,尽量不用字符型。

     查询时比较数值比比较字符串效率高。占用的存储空间可能会更少。

     比如:存放手机号码。手机号码都是11位,用字符型村需要11个字节而用无符号的整型只需要4个字节。

                记录用户登录的ip地址。按照传统的字符串方式存放"192.168.1.1"需要15字节,ip地址是有32位二进制组成,转换成整数最大就4294967295,数据库有INET_ATON函数把ip地址转换成整数,INET_NTOA把数值转换成ip地址形式。

2、数据字段建立索引。

      这个大家伙都知道索引可以有效的提高查询效率,但是索引也不是随便就建的,索引是需要维护的,过多的建立索引就增加了维护索引的成本性能反而会下降。我们只需要在经常用于查询条件的字段上建立索引即可。


sql优化方面:

1、尽量避免写select * 。

     因为select * 会查询出所有的字段,查询的字段越多会降低效率。如果数据库服务器和客户端不在同一台电脑上还会有网络传输的问题。如果查询的表友几十个字段,而你只需要其中的几个字段,那其余的字段查出来就是一种浪费。我们应该需要哪些字段就查询哪些字段。

2、当只需要判断是否有需要的数据时需注意。

     当我们只需要判断用户表中有没有四川的用户时:

           mysql:select 1 from users where addr='四川' limit 1;

          oracle:select 1 from users where addr='四川' and rownum<=1;

   这里我们只需要知道是否有四川的用户,当我们查询到一条四川的用户的记录就说明有四川,就不需要继续向下查找。写成select 1 是因为我们不需要查询到用户的数据,只是占各位。

3、不要用null作为查询条件。

      select  id,name from user where addr is null,select  id,name from user where addr is not null;

    is null和is not null 会导致全表扫描。



              待续。。。


  


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红掌花苞发黑了怎么办 水培植物腐根了怎么办 水培绿萝水发臭怎么办 水里养花根烂掉怎么办 桅子花叶子发黑怎么办 大株月季烂根怎么办 月季水浇多了烂根的怎么办 金桔盆栽烂根怎么办 盆栽的长寿果树烂根怎么办 家里的石榴烂根怎么办 山桔盆栽烂根怎么办 养的植物烂根怎么办 桅子花叶子长霉怎么办 紫薇花叶子干了怎么办 高层玻璃阳台往下看恐高怎么办 比熊放阳台叫怎么办 海员入职体检不合格怎么办 联币金融立案投资人怎么办 联币金融的投资怎么办 养老保险领了几个月就挂了怎么办 高铁餐吧乘务员东西卖不出去怎么办 铁路局如果查出有乙肝怎么办 在火车站丢了东西怎么办 在新乡火车站丢了东西怎么办 自己的行李忘到高铁安检怎么办 高铁二等座睡觉怎么办 空少岁数大了怎么办 美国留学生办欧洲签证怎么办 苏州小区不让装充电桩怎么办 饿了么运力不足怎么办 书法落款写偏了怎么办 辐射4运行不流畅怎么办 vgs币忘了映射怎么办 货车把我的货物运输中损坏怎么办 道路货物运输从业资格证过期怎么办 高铁喷雾被扣了怎么办 宝宝不好好吸奶怎么办 宝宝不用劲吸奶怎么办 刚出生的宝宝不吃奶怎么办 老婆怀孕想吐怎么办呢 菜把下水道堵了怎么办