Mysql数据库索引

1.创建索引 

alter table 表名 add index 索引名称自定义 (字段名称) ;

2.查询索引是否有建立成功,执行当前sql索引情况

用explain 关键字 来执行检验sql 例如 explain select * from a
 
3.查询sql执行时间
1,查一下profile是不是打开了,默认是不打开的。
show profiles; 

2.show variables like "%pro%"; 查看 profiling 是否打开

3.开启profile
set profiling=1; 

4.查看执行时间情况

show profiles;
show profile for query 1;



4.建立索引的原则

使用索引需要注意:

⑴只对WHERE和ORDER BY需要查询的字段设置索引,避免无意义的硬盘开销;

⑵组合索引支持前缀索引;

⑶更新表的时候,如增删记录,MySQL会自动更新索引,保持树的平衡;因此更多的索引意味着更多的维护成本

 索引的字段类型问题

  • text类型,也可建索引(需指定长度)
  • myisam存储引擎索引键长度综合不能超过1000字节
  • 用来筛选的值尽量保持和索引列同样的数据类型

索引分四类:

index ----普通的索引,数据可以重复

fulltext----全文索引,用来对大表的文本域(char,varchar,text)进行索引。语法和普通索引一样。 

unique ----唯一索引,唯一索引,要求所有记录都唯一

primary key ----主键索引,也就是在唯一索引的基础上相应的列必须为主键

 

原则

   1,单表数据太少,索引反而会影响速度;更新非常频繁的数据不适宜建索引

   2,where后的条件,order by ,group by 等这样过滤时,后面的字段最好加上索引。根据实际情况,选择PRIMARY KEY、UNIQUE、INDEX等索引,但是不是越多越好,要适度

    3,联合查询,子查询等多表操作时关连字段要加索引

ps:数据量特别大的时候,最好不要用联合查询,即使你做了索引



posted on 2017-09-26 11:09  还有梦  阅读(109)  评论(0编辑  收藏  举报

导航