MySQL索引必知必会

打印 上一主题 下一主题

主题 926|帖子 926|积分 2782

索引必知必会

索引原理

没有索引的时候,搜索是全表进行扫描,速度很慢;
当我们建立了一个索引后,会生成一个索引的数据结构(例如索引二叉树)
代价


  • 索引会占用磁盘空间
  • 对增删改语句的效率有影响 -> 结合实际场景是查询业务多还是增删改业务多来判断
所以不能盲目添加
规则


  • 频繁作为查询条件的字段可以创建索引
  • 唯一性太差的字段不适合单独创建索引,即使频繁查询
  • 频繁更新的字段不适合创建索引
  • 不会出现在where子句中的字段不要创建索引
索引类型


  • 主键索引(primary key)
  • 唯一索引(unique key)
    因为要判断是否唯一,也是需要查询全表的
  • 普通索引(index)
  • 全文索引(fulltext)适用于MyISAM
    实际开发中很少用这个索引,一般用Solr或者ElasticSearch
索引的使用

查询索引
  1. show indexes from 表名;
复制代码
  1. show keys from 表名;
复制代码
添加索引
  1. create [unique] index 索引名 on 表名 (列名);
复制代码
  1. alter table 表名 add [unique] index 索引名 (列名);
复制代码
添加主键索引
  1. alter table 表名 add primary key (列名);
复制代码
注:在某表某列创建的这个索引,只对该列有效,即查询时使用该列作为条件才有效果
如果某列的值不会重复,则优先考虑unique索引,否则使用普通索引
删除索引
  1. drop index 索引名 on 表名;
复制代码
删除主键索引
  1. alter table 表名 drop primary key;
复制代码
后续再更新索引调优的内容

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表