索引优化

十二、MySQL中常用的SQL优化

那年仲夏 提交于 2019-11-29 09:20:26
插入优化 MyISAM批量导入 非空的表导入的时候会同时处理索引,导致导入效率低下,所以通过以下方式可以快速导入。 //关闭非唯一索引 ALTER TABLE table_name DISABLE KEYS; load data infile 'path' in to table table_name; //开启非唯一索引 ALTER TABLE table_name ENABLE KEYS; InnoDB批量导入 1、按主键顺序导入,InnoDB的数据按主键排列的B+Tree结构,所以数据按主键排序可以提升效率。 2、关闭唯一性校验 //关闭唯一校验 SET UNIQUE_CHECKS=0; load data infile 'path' in to table table_name; //开启唯一校验 SET UNIQUE_CHECKS=1; 3、关闭自动提交 //关闭自动提交 SET AUTOCOMMIT=0; load data infile 'path' in to table table_name; //提交数据 COMMIT; //开启自动提交 SET AUTOCOMMIT=1; INSERT优化 1、合并多条INSERT语句,减少客户端与MySQL的通讯次数,减少SQL解析次数。 2、采用 INSERT DELAYED立即执行SQL语句(在内存中,之后写入到硬盘)。

十、MySQL的SQL优化之定位SQL的问题

点点圈 提交于 2019-11-26 23:18:39
找出SQL慢的原因 谈到MySQL不得不说的就是大家都会遇到的性能问题,今天就记录一下SQL优化相关的技巧。 检查MySQL状态 通过检查SQL语句的状态有助于MySQL的优化,首先介绍 show status命令 //检查当前会话的状态 SHOW SESSION STATUS; //检查全局状态 SHOW GLOBAL STATUS; 这个命令可以查看到MySQL中sql语句的执行状态,具体的如下: 参数 说明 Com_select SELECT查询次数 Com_insert INSERT操作次数 Com_update update更新次数 Com_delete delete操作次数 innodb_rows_read innodb_rows_inserted innodb_rows_updated innodb_rows_deleted select查询返回行数 update、insert、delete操作次数 Connections MySQL累计连接次数 Slow_queries 慢查询次数 Handler_read_key 索引查询数 Handler_read_rnd_next 读取下一行的次数 通过以上的数据,可以检查出MySQL连接数量,决定是否使用链接池,索引利用率。 根据读写状况,可以了解到选择什么样的存储引擎更加合适。 分析SQL的执行计划