学习了一些关于mysql优化的东东,整理如下,备忘。
- 合理设计数据库与表结构,主要表现在,合理地遵循3NF(三个范式),有时采用逆范式也是可以的。当数据量很大很大时,可将表进行垂直分割或是水平分割,具体情况具体分析吧还是~;
- SQL语句优化(注意使用explain)
加索引
索引类型
- 主索引,alter table table_name add primary key(col),一般表设置主键,默认主索引就创建了;
- 唯一索引,create unique index index_name on table_name(col);
- Index普通索引,create index index_name on table_name(col);
- 全文索引(FullText),常用于分词
- 复合索引,如:create index index_name on table_name(col1,col2),若独独使用col2,而不使用col1,此时,col2相当于无效;
创建索引的SQL语句
- create [unique | FULLTEXT,] index index_name on table_name(col1,col2...);
- alter table table_name add index index_name on(col1,col2....);
删除索引
- drop index index_name on table_name;
- alter table table_name drop index index_name;
显示索引
- show index(es) from table_name;
- show keys from table_name;
索引使用注意事项
- select col1,col2... from table_name where col1 like '%...',即以“%”开头,对创建的索引无效;
- 带“or”用不到索引,所以还是尽量少用“or”吧;
- varchar,char 字符串类型若没带引号,索引也用不到,这点要注意;
explain使用,待续。。。