文章目录
数据库的操作有很多,如果某些操作不当虽然不会出现错误,但是会导致数据库性能下降,随着MySQL数据库的使用,SQL执行速度变慢,原因可能如下:
- 硬件问题,如内存不足,网络速度慢等。
- 一个数据库的表过多,一张表的数据过多。
- 大数据的查找没有建立索引或者索引失效。
- 服务器的参数设置不当。
那么我们可以从下面几方面对数据进行优化:
一、优化查询语句SQL
我们可以通过MySQL慢查询日志,查看占用时间最长的SQL语句,可以对其进行优化。
(一)查询语句时使用LIMIT 1
如果我们知道数据库的条数,知道最后查询结果只有一条时,使用limit 1,那么数据库查询到一条语句后,会立即停止搜索,让性能提升。
(二)避免全表查询
查询时尽量不适用select* 查找全表所有字段的信息,这样查询,有很多字段都是不需要的字段,故这样查询给MySQL带来了不必要的负担,查询速度变慢。
(三)使用连接查询代替子查询
子查询需要将多个逻辑不断嵌套,虽然可以避免死锁,但是实现逻辑难,效率低。连接查询速度更快,独立处理单个表的逻辑,将其连接,实现简单。
(四)尽量少使用通配符和like
在搜索字符型字段时,我们会用到通配符和模糊查询,这种做法虽然简单,但是耗费系统性能。
(五)在建立索引列上不要运算、where子句进行函数操作
都会导致索引失效。
二、优化表的设计
(一)为每一张表设置一个主键
最好将int类型的字段设为主键,在数据量庞大时可以建立索引,进行查找;最好不要使用varchar当主键,会让性能下降。
(二)为常用搜索字段建立索引
为频繁查询搜索的字段建立索引,让查询性能变为logn,速度大大提高。
(三)尽可能的对字段约束not null
除非必须将其设为NULL值,其他情况将字段保持not null,因为索引不包含null值。
(四)使用varchar代替char
节省存储空间,提高效率。
三、使用缓存
给数据库增加缓存系统,将查找频率高的数据放到缓存种,可以减少数据库负载压力,提高性能
四、选择正确的存储引擎
- MyISAM适合大量查询的应用,不适合大量的写操作;因为它使用表锁,并发性低,所以修改时速度降低。
- InnoDB适合大量的修改操作,因为加的是行锁,并发性高;支持事务。
加油哦!🍲。