数据库优化的方法

(1)SQL语句优化

查询优化,考虑在where或order by涉及的列上建立索引

尽量避免在where子句中使用!=或<>操作符,否则将使引擎放弃使用索引而进行全表扫描

尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描(select id from t where num is null)可以再num上设置默认值为0,确保表中num列没有null值,然后这样查询:select id from t where num=0

尽量避免在where子句中使用or来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描

尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描

不要在where自居中的“=”左边进行函数、算数运算或其他表达式运算,否则系统将可能无法正确使用索引

很多时候用exists代替in是一个好的选择

用where子句替换having子句,因为having只会在检索出所有记录之后才会对结果集进行过滤

(2)索引优化

在合适的列添加索引,不在不应该添加索引的列添加索引

(3)数据库结构优化

范式优化:比如消除冗余(节省空间。。。)

反范式优化:比如适当加冗余(减少join)

拆分表:分区将数据在物理上分割开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。对数据量大的时时表可采取此方法。

(4)服务器硬件优化

猜你喜欢

转载自blog.csdn.net/weixin_40932524/article/details/81071931