MySQL——如何设计和使用索引?

对相关列使用索引是提高select操作性能最佳途径。

索引的几种常用类型:

  • UNIQUE唯一索引
  • FULLTEXT全文本索引
  • SPATITL空间索引

索引可以在创建表的时候同时创建,也可以随时增加新的索引,创建唯一索引的语法为:

create table stu(
    -> id int not null,
    -> username varchar(20),
    -> password varchar(20),
    -> unique index(id ASC)
    -> );

也可以使用alter table的语法来增加索引,语法和create index类似

alter table table_name index index_name ( column )

查看索引是否被使用

explain select * from table_name +查询条件;

删除索引

drop index index_name on table_name







索引的设计原则

索引设计可以遵循一些已经有的规则,创建索引的时候金量考虑符合这些原则,便于提升索引的使用效率,更高效率的使用索引。

  • 搜索的索引列,不一定是所要选择的列。最适合索引的列是出现在where子句中的列,或者连接自居中指定的列,而不是出现在select关键字后面的选择列表中的列。
  • 使用唯一索引。考虑某列中的值的分布,如果该列的区分度很大,比如用户名,很容易区分很多行,但是如果是性别,就很难区分出来。
  • 使用短索引,如果对字符串列进行索引,应该指定一个前缀长度,只要有可能尽量这样做,例如,有一个CHAR(200)的列,如果在前10个或20个字符内多数值是唯一的,那么就不要对整个列进行索引,对前10个或者20个字符进行索引能够节省大量索引空间,会使查询更快。更重要的是,对于较短的键值,索引高速缓存中的块能容纳更多的键值。
  • 不要过度使用索引,不要以为索引越多越好,每个额外的索引都要占用额外的磁盘空间,并降低写操作的性能,在修改表时,索引必须进行更新,有时候可能需要重构,因此索引越多,所花费的时间越长。

小结

索引用于快速找出某个列中有一特定值的行,如果不使用索引,MySQL必须从第一条记录开始读完整个表直到找到相关的行,表越大,所花费的时间越长,如果表中查询的列有一个索引,MySQL能够快速到达一个位置区搜索数据文件中的中间,不需要从头开始遍历。

问题反馈

在使用学习中有任何问题,请留言,或加入Android、Java开发技术交流群

在这里插入图片描述

发布了123 篇原创文章 · 获赞 74 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43927892/article/details/102801229