数据库调优

一.数据库表结构结构的设计

  1. 能够用数字类型的字段尽量选择数字类型而不用字符串类型的(比如电话号码),这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接回逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
  2. 对于字符类型的选择。char查询快,但是耗存储空间,varchar查询相对慢一些但是节省存储空间。在设计字段的时候可以灵活选择,例如用户名、密码等长度变化不大的字段可以选择CHAR,对于评论等长度变化大的字段可以选择VARCHAR。
  3. 字段的长度在最大限度的满足可能的需要的前提下,应该尽可能的设得短一些,这样可以提高查询的效率,而且在建立索引的时候也可以减少资源的消耗

二.查询的优化

  1. 保证在实现功能的基础上,尽量减少对数据库的访问次数
  2. 通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担
  3. 不要使用SELECT * FROM T1。要用到几列就选择几列如:SELECT COL1,COL2 FROM T1;
  4. 尽量将多条SQL语句压缩到一句SQL中。每次执行SQL的时候都要建立网络连接、进行权限校验、进行SQL语句的查询优化、发送执行结果,这个过程是非常耗时的,因此应该尽量避免过多的执行SQL语句,能够压缩到一句SQL执行的语句就不要用多条来执行
  5. 在in和exists中通常情况下使用EXISTS,因为in不走索引
索引:

不管何种调优方式,索引是最根本的方法,是一切优化手法的内功。创建索引给检索带来的性能提升往往是巨大的,因此在发现检索速度过慢的时候应该首先想到的就是创建索引

  1. 在经常需要进行检索的字段上创建索引,比如要按照姓名进行检索,那么就应该在姓名字段上创建索引
  2. 经常需要进行检索的字段:
    作为主键的列上
    经常需要排序的列上
    经常使用在where子句上面的列上
  3. 避免在索引上使用计算
    在where字句中,如果索引列是计算或者函数的一部分,DBMS的优化器将不会使用索引而使用全表查询
    效率低:select * from person where salary*12>25000(salary是索引列)
    效率高:select * from person where salary>25000/12(salary是索引列)
  4. 什么时候索引会失效:
    条件中用or
    like的模糊查询以%开头
    如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不会使用索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值