1、提高sql文件导入的效率有以下几种方法:
1.1、主键顺序插入:
主键有顺序:主键自增 执行效率快
主键无顺序:自定义主键 执行效率相对较慢
1.2、关闭唯一性校验
在导入之前关闭唯一性校验 set unique_checks = 0;
在导入之后开启唯一性校验 set unique_checks = 1;
1.3、手动提交事务
关闭自动提交:set autocommit = 0;
开启自动提交:set autocommit = 1;
2、查看sql主键
head sql1.log
3、sql文件导入
load data local infile 本地SQL文件地址 into table 表名 fields terminated by ',' lines terminated by '\n';
4、优化insert语句
多行插入
在事务中进行数据插入
数据有序插入
5、优化order by语句
多字段排序
有序索引
6、优化group by语句
order by null 不排序
7、优化嵌套查询
子查询产生一个临时表,在临时表中进行查询。
exist 走索引
in 走索引
8、优化OR条 件
建议使用uninone(并集)来替换null
9、优化分页
越往后查询效率越低,分页加排序
根据id进行查询
适用于主键自增的表,可以把limit查询转换成某个位置的查询。
10、filesort的优化
MySQL的两种排序算法:
(1)两次扫描算法:根据条件去除排序字段和行指针信息,然后再排序区排序,如果surt buffer不够,则在临时表在存储排序结果。完成排序之后,在根据行指针徽标读取记录。
(2)一次扫描算法:一次性去除满足条件的所有字段,然后再排序后直接输出结果集。排序时内存开销大,但是效率高。
11、使用SQL提示
SQL提示,是优化数据库的一个重要手段,SQL提示就是在sql语句中加入一些人为的提示来达到优化操作的目的
use index 提供一个参考,建议你使用
ignore index 忽略一个索引
force index 强制使用一个索引
12、两种排序方式
(1)通过对返回数据进行排序,也就是通常说的filesort排序,所有不是通过索引直接返回排序结果的排序都叫FileSort排序。
(2)通过有序索引顺序扫描直接返回有序数据,这种情况即为using index,不需要额外排序,操作效率高。