MySQL数据库优化的方法

  • 一、优化查询语句SQL
  • (一)查询语句时使用LIMIT 1
  • (二)避免全表查询
  • (三)使用连接查询代替子查询
  • (四) 尽量少使用通配符和like
  • (五) 在建立索引列上不要运算、where子句进行函数操作
  • 二、优化表的设计
  • 1、为每一张表设置一个主键
  • 2、为常用搜索字段建立索引
  • 3、尽可能的对字段约束not null
  • 4、使用varchar代替char
  • 三、使用缓存
  • 四、选择正确的存储引擎


数据库的操作有很多,如果某些操作不当虽然不会出现错误,但是会导致数据库性能下降,随着MySQL数据库的使用,SQL执行速度变慢,原因可能如下

  1. 硬件问题,如内存不足,网络速度慢等。
  2. 一个数据库的表过多,一张表的数据过多。
  3. 大数据的查找没有建立索引或者索引失效。
  4. 服务器的参数设置不当。

一、优化查询语句SQL

我们可以通过MySQL慢查询日志,查看占用时间最长的SQL语句,可以对其进行优化。

(一)查询语句时使用LIMIT 1

  • 如果我们知道数据库的条数,知道最后查询结果只有一条时,使用limit 1,那么数据库查询到一条语句后,会立即停止搜索,让性能提升。

(二)避免全表查询

  • 查询时尽量不适应select* 查找全表所有字段的信息,这样查询,有很多字段都是不需要的字段,故这样的查询给MySQL带来了不必要的负担,查询速度变慢。

(三)使用连接查询代替子查询

  • 子查询需要将多个逻辑不断嵌套,虽然可以避免死锁,但是实现逻辑难,效率低。连接查询速度更快,独立处理单个表的逻辑,将其连接,实现简单。

(四) 尽量少使用通配符和like

  • 在搜索字符型字段时,我们会用到通配符模糊查询,这个做法虽然简单,但是耗费系统性能。

(五) 在建立索引列上不要运算、where子句进行函数操作

  • 都会导致索引失效。

二、优化表的设计

1、为每一张表设置一个主键

  • 最好将int类型的字段设为主键,在数据量庞大时可以建立索引,进行查找;
  • 最好不要使用varchar当主键,会让性能下降

2、为常用搜索字段建立索引

  • 为频繁查询搜索的字段建立索引,让查询性能变为logn,速度大大提高。

3、尽可能的对字段约束not null

  • 除非必须将其设为NULL值,其他情况将字段保持not null,因为索引不包含null值。

4、使用varchar代替char

  • 节省存储空间,提高效率。

三、使用缓存

  • 给数据库增加缓存系统,将查找效率高的数据放到缓存中,可以减少数据库负载压力,提高性能

四、选择正确的存储引擎

  1. MyISAM 适合大量查询的应用,不适合大量的写操作;因为它使用表锁,并发性低,所以修改时速度降低。
  2. InnoDB 适合大量的修改操作,因为加的是行锁,并发性高;支持事务