1、优化查询
可以通过分析查询语句了解查询语句的执行情况:
explain / describe 查询语句
查询结果显示了id,select_type,table,type,possible_keys,key等信息
id:表示查询语句的编号
select_type:表示查询语句的类型。该参数的几个常用取值:simple表示简单查询,其中不包括连接查询和子查询;primary表示主查询,或者最外层的查询语句;union表示连接查询的第二个或后面的查询语句
table:表示查询的表
possible_keys:表示查询中可能使用到的索引
key:查询中实际用到的索引
key_len:索引字段的长度
rows:表示查询的行数
使用索引查询:
查询语句使用like,如果查询条件的第一个字符是%,索引不会被使用
多列索引只有在查询条件的第一个字段是索引,索引才会被使用
查询语句中如果有or,则其前后的查询条件字段必须都是索引,索引才会被使用
使用索引查询:
查询语句使用like,如果查询条件的第一个字符是%,索引不会被使用
多列索引只有在查询条件的第一个字段是索引,索引才会被使用
查询语句中如果有or,则其前后的查询条件字段必须都是索引,索引才会被使用
优化查询基本原则:
尽量早过滤
优化子查询,使用join代替子查询
优化子查询,使用join代替子查询
尽量少排序
2、优化数据库结构:
○1分表、添加中间表、增加冗余字段
○2优化插入记录的速度:
2、优化数据库结构:
○1分表、添加中间表、增加冗余字段
○2优化插入记录的速度:
1、当有大量插入数据时,应先禁用索引插入完毕后再开启索引。
禁用索引语句:alter table 表名 disable keys
开启索引语句:alter table 表名 enable keys
2、插入记录时禁用唯一性检查,插入后开启
禁用唯一性检查:set unique_checks = 0
开启唯一性检查:set unique_checks = 1
3、优化insert语句
插入数据时应尽量一次性插入,减少与数据库的连接效率更高
○3分析表、检查表、优化表
○3分析表、检查表、优化表
优化MySQL的参数:
内存中会为MySQL保留部分缓冲区,这些缓冲区用以提高MySQL数据库的处理速度。缓冲区的大小都是在MySQL配置文件中进行设置的。
一些重要的参数配置在my.ini文件的mysqld组中。