优化

关于索引:索引可以提高查询速度,但并不是使用索引时,索引都会起作用。下列情况下,索引不会起作用

  • like:使用like关键字的查询语句中,如果匹配字符串的第一个字符为% ,索引不会起作用。
  • 组合查询:只有查询条件中使用了第一个索引字段,索引才会起作用
  • or关键字:查询语句中条件中只有or关键字,且or前后两个条件中的列都是索引时,索引才会起作用。
    优化子查询:使用子查询可以进行select语句嵌套,一个select的查询结果作为另一个select的输入。子查询使用起来很灵活,单执行效率不高。执行子查询时,mysql需要为内层查询结果建立一个临时表,然后外层查询从临时表中读取记录,查询完毕后,再撤销临时表。因此,子查询速度会受到一定影响。如果查询的数据量比较大,影响会随之增大。*****mysql中,可以使用连接查询代替子查询。连接查询不需要建立临时表,如果查询时使用索引,性能会更好。之所以性能更好,是因为mysql不需要在内存中建立临时表。
    优化数据库结构
    1.将字段很的表分解成多个表:对于字段很多的表,可以将使用频率很低的字段分离出来,形成新的表。
    2.对于需要经常联合查询的表,可以建立中间表提高查询效率。把需要经常联合查询的数据插入到中间表中,然后将原来的联合查询改为对中间表的查询,已提高查询效率
    3.优化插入记录的速度:插入记录时,影响插入速度的主要是索引、唯一性校验、一次插入记录条数等。
    对MyISAM引擎:
    (1)对于非空表,插入记录时,mysql会根据表的索引对插入的记录建立索引。如果插入大量数据,建立索引会降低速度。可以在插入之前禁用索引,插入完毕后再开启索引。对于空表不需要。
    语句:ALTER TABLE table_name DISABLE KEYS;
    (2)禁用唯一性校验,语句:
    SET UNIQUE_CHECKS=0; 关闭
    SET UNIQUE_CHECKS=0; 开启
    (3)插入多条记录是,使用批量插入,不要使用分条插入。
    (4)使用 load data infile,语
LOAD DATA INFILE file INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';

InnoDB引擎:
(1) 禁用唯一性检查
(2)禁用外键检查

SET FOREIGN_KEY_CHECKS=0;
ET FOREIGN_KEY_CHECKS=1;

(3)禁止自动提交

SET AUTOCOMMIT=0;
SET AUTOCOMMIT=1;

分析、检查、优化表

  • 分析表:ANALYZE TABLE table_name;
  • 检查表:CHECK TABLE table_name;
  • 优化表:OPTIMIZE TABLE table_name;
    优化硬件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值