【数据库】优化查询的方法

一、使用索引

尽量避免全表扫描,首先应该考虑在where及order by,group by设计的列上建立索引。

二、优化SQL语句

  1. 通过explain(查询优化神器)来查看SQL语句的执行效果,可以帮助选择更好的索引和优化查询语句。例如:expain select * from X
  2. 任何地方都不要使用select * from X,用具体的字段代替 * ,不要返回任何用不到的字段
  3. 不在索引列做运算或者使用函数
  4. 查询尽可能使用limit减少返回的行数,减少数据传输时间和带宽浪费

三、优化数据库对象

  1. 优化表的数据类型。
    能小就用小。使用正确的表示和存储数据的最短类型。
  2. 对表进行拆分
    1. 垂直拆分
      把主键和一些列放在一个表中,然后把主键和另外的列放在另一个表中。如果一个表中某些列常用,而另外一些不常用,则可以采用垂直拆分。
    2. 水平拆分
      根据一列或者多列数据的值把数据行放到二个独立的表中。
  3. 使用中间表来提高查询速度
    创建中间表,表结构和源表结构完全相同,转移要统计的数据到中间表,然后在中间表上进行统计,得出想要的结果。

四、内存的优化

  1. CPU的优化
    选择多核和主频高的CPU
  2. 内存的优化
    使用更大的内存。将尽量多的内存分配给MySQL做缓存。
  3. 磁盘I/O的优化
    1. ​​​​​​​使用磁盘阵列
    2. 调整磁盘调度算法
  4. MySQL自身的优化
    对MySQL自身的优化主要是对其配置云讯my.cnf中的各项参数进行优化调整。如指定MySQL查询缓冲区的大小,指定MySQL允许的最大连接进程树等。
  5. 应用优化
    1. ​​​​​​​使用数据库连接池
    2. 使用查询缓存
      它的作用是存储select查询的文本及其相应结果。如果随后收到一个相同的查询,服务器会从查询缓存中直接得到查询结果。查询缓存适用的对象时更新不频繁的表,当表中数据更改后,查询缓存中的相关条目就会被清空。

数据库分表、分区、分库

分表见上述

分区就是把一张表的数据分成多个区块,这些区块可以在一个磁盘上,也可以在不同的磁盘上,分区后,表面上还是一张表,但数据散列在多个位置,这样一来,多块硬盘同时处理不同的请求,从而提高磁盘I/O的读写性能,实现比较简单。包括水平分区和垂直分区

分库就是根据业务不同把相关的表切分到不同的数据库中,比如web、bbs、blog等库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值