MySQL索引

查看索引

show index from  table_name;

创建索引

普通索引

最基本的索引,它没有任何限制。普通索引允许被索引的数据列包含重复的值。

--修改表结构
alter table table_name add index index_name(column_name);
--创建索引
create index indexName on table_name (column_name);
--创建表时直接指定
create table ([...], index index_name(column_name));

唯一索引

它与前面的"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

--修改表结构
alter table table_name add unique index_name(column_name);
--创建索引
create unique index indexName on table_name (column_name);
--创建表时直接指定
create table ([...], unique index index_name(column_name));

主键索引

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引

--修改表结构
alter table table_name add primary key(column_name);
--创建表时直接指定
create table ([...], primary key(column_name));

多列索引

索引可以覆盖多个数据列,如像 INDEX(columnA, columnB) 索引。这种索引的特点是 MySQL 可以有选择地使用一个这样的索引。如果查询操作只需要用到 columnA 数据列上的一个索引,就可以使 用复合索引 INDEX(columnA, columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A, B, C) 可以当做 A 或 (A, B) 的索引来使用,但不能当做 B、C 或 (B, C) 的索引来使用。

--修改表结构
alter table table_name add index index_name(column_name1, column_name2, ...);
--创建索引
create index indexName on table_name (column_name1, column_name2, ...);
--创建表时直接指定
create table ([...], index index_name(column_name1, column_name2, ...));

全文索引

文本字段上的普通索引只能加快对出现在字段内容最前面的字符串(也就是字段内容开头的字符)进行检索操作。如果字段里存放的是由几个、甚至是多个单词构成 的较大段文字,普通索引就没什么作用了。这种检索往往以 like %word% 的形式出现,这对 MySQL 来说很复杂,如果需要处理的数据量很大,响应时间就会很长。

这类场合正是全文索引(full-text index)可以大显身手的地方。在生成这种类型的索引时,MySQL 将把在文本中出现的所有单词创建为一份清单,查询操作将根据这份清单去检索有关的数 据记录。

注解:InnoDB数据表不支持全文索引。

--修改表结构
alter table table_name add fulltext index_name(column_name);
--创建索引
create fulltext index indexName on table_name (column_name);
--创建表时直接指定
create table ([...], fulltext index index_name(column_name));

索引的长度

在为 CHAR 和 VARCHAR 类型的数据列定义索引时,可以把索引的长度限制为一个给定的字符个数(这个数字必须小于这个字段所允许的最大字符个数)。这 么做的好处是可以生成一个尺寸比较小、检索速度却比较快的索引文件。在绝大多数应用里,数据库中的字符串数据大都以各种各样的名字为主,把索引的长度设置 为 10~15 个字符已经足以把搜索范围缩小到很少的几条数据记录了。

在为 BLOB 和 TEXT 类型的数据列创建索引时,必须对索引的长度做出限制;MySQL 所允许的最大索引长度是 255个字符。

删除索引

删除主键

alter table drop primary key;

删除索引

alter table drop index index_name;
--或者
drop index index_name on table_name;

删除外键

alter table foreign key fk_symbol;

参考文章:
https://www.cnblogs.com/bruce1992/p/13958166.html

https://blog.csdn.net/qq_43293244/article/details/82889225?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-82889225-blog-109066769.pc_relevant_multi_platform_whitelistv6&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-82889225-blog-109066769.pc_relevant_multi_platform_whitelistv6&utm_relevant_index=6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值