方法1:
将字段很多的表分解为多个表。
通过这种分解,可以提高表的查询效率。对于字段很多,且有些字段使用不频繁的表,可以通过这种分解的方式优化数据库的性能。
方法2:
增加中间表
对于经常需要联合查询的表,可以建立中间表 提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率。
方法3:
增加冗余字段
合理加入冗余字段可以增加查询的速度。从数据库性能来看,为了提高查询速度而增加少量的冗余 大部分是可以接受的。是否增加冗余提高数据库性能,这要根据实际需求综合分析。
方法4:
优化插入记录的速度
4.1 禁止索引
插入记录时,mysql会根据表的索引对插入的记录建立索引。如果插入大量数据,建立索引会降低插入记录的速度,为了解决这种问题,可以在插入记录之前,仅用索引,数据插入完毕后再开启索引。
禁止索引
alter table table_name disable keys
开启索引
alter table table_name enable keys
4.2、禁止唯一性
插入数据时,mysql会对插入的记录进行唯一性校验,这种唯一性校验也会降低插入记录的速度,为了降低这种情况对查询速度的影响,我们先禁止唯一性检查。
禁止唯一性检查语句
set unique_checks=0;
开启唯一性检查语句
set unique_checks=1;
4.3、使用批量插入。
插入多条记录时,可以使用一条 insert 语句插入一条记录,也可以使用一条insert语句插入多条。后者的速度比前者的速度要快。
4.4、使用load data infile 批量导入
当需要批量导入数据时,如果能有load data infile 批量导入,就尽量使用。因为 load data infile 语句 导入数据比insert 语句快。
禁用外键检查语句
set foreign_key_checks=0;
恢复对外键的检查语句
set foreign_key_checks=1;
禁止自动提交
set autocommit=0;
恢复自动提交
set aotucommit=1;
方法5:
分析表、检查表、优化表
分析表 :主要是分析关键字的分布
检查表:主要是检查表是否存在错误、
优化表:主要是消除删除、更新造成的空间浪费。
分析表语句:
ANALYZE TABLE t_order_info
Table Op Msg_type Msg_text
cgjr.t_order_info analyze status OK
检查表语句:
CHECK TABLE t_order_info
优化表:
OPTIMIZE TABLE t_user_info