Mysql优化

来源:互联网 发布:windows安装 nvidia 编辑:程序博客网 时间:2024/06/07 03:57

一、索引相关

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查询时使用到了覆盖索引



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

单行访问是很慢的;

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

索引覆盖查询是很快的。

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

并尽可能的使用覆盖索引



原创粉丝点击