您的位置:首页 > 数据库 > MySQL

Mysql优化

2017-08-23 11:34 176 查看
一、索引相关

1.在一个大表上快速创建索引

可以考虑先导出数据,删除然后新建表,最后再将以前的数据导入,这样比在原有大数据量表上直接建索引快速一些

2.复杂查询查看sql执行计划(explain)

3.尽量少使用not in,not exist,not null这样的查询

4.对于多列索引,尽可能避免范围查询(因为范围查询字段后面的字段无法使用索引)

如idx_user_club(user_id,club_id),如果查询中有user_id的范围查询,则后面的club_id不会用到索引

因此对于这样的查询要麽避免范围查询,要麽将范围查询通过其它自定义的维护字段转换为等值查询

Explain时各个列含义

Type列

"index" 表示Mysql使用索引扫描来排序

Extra列

“Using Where” 表示Mysql服务器将存储引擎返回行以后再应用过滤条件

“Using index” 表示Mysql查询时使用到了覆盖索引

选择索引和编写利用索引的查询时,应注意:

单行访问是很慢的;

按顺序访问范围数据是很快的;

索引覆盖查询是很快的。

总结来说就是,编写查询语句时应该尽可能选择合适的索引以避免单行查找,尽可能地使用数据原生顺序从而避免额外的排序操作,

并尽可能的使用覆盖索引
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: