1.什么是索引?
MySQL可以为多个字段建立索引,一个索引可以包括16 个字段
什么是子查询?子查询就把查询好结果集,当成另外一条sql的条件;
在sql中尽量不要使用子查询,因为执行子查询的时候,mysql需要创建临时表,所以子查询就会受到影响,多了一个创建临时表和销毁临时表的过程.
create table ##全局临时表名(字段名 约束条件,字段名2 约束条件.....)
Create table persons (id int,name varchar(255),city varchar(255))
二、数据库结构优化
三、插入数据优化
1.为什么索引会影响插入速度?
因为我们插入数据的时候,不只是把数据写入数据库文件,还要把这个数据写到索引中,索引越多插入的就越慢。
插入数据的优化,根据不同的存储引擎优化的手段一样,MySQL的存储引擎有myISAM 和InnoDB.
myISAM是MySQL的默认存储引擎
myISAM 不支持外键,数据的正确性和数据的类型会可能会受到影响
Mysql 的存储引擎myISAM 和innoDB 的区别?
Alter 表名 字段名 disable key 禁用索引
Alter 表名 字段名 enable key 开启索引
如果是空表批量插入数据,则不需要进行操作,因为myISAM的引擎的表是导入数据后才建立索引。
3.禁用唯一性检查
Set unique_checks=0 禁用唯一性检查
Set unique_checks=1 开启唯一性检查
总结: 唯一性校验会降低插入记录的速度
例如:主键id 不能重复,每次进来需要校验检查
5. innoDB存储引擎优化
5.1禁用唯一性检查
5.2禁用外键检查
总结:innoDb支持外键检查MyISAM 不支持外键检查,所以没有 就没有禁用外键检查这一说
总结:多了一层事物的控制,所以会影响插入的速度。插入前禁止事物自动提交,数据插入后在恢复,可以提高插入速度。
四、服务器优化
4.1优化服务器硬件
总结:MySQL最终跑向我们的服务器的,所以我们的服务器也是可以优化的。
数据是在内存中来操作的。