前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习15_索引index

MySQL学习15_索引index

作者头像
皮大大
发布2021-03-02 15:11:40
4190
发布2021-03-02 15:11:40
举报
文章被收录于专栏:机器学习/数据可视化

MySQL索引的建立对MySQL的高效运行是很重要的。索引可以大大提高MySQL的查询速度。 比如:新华字典的目录页(索引)快速查找汉字;图书馆通过首字母可以快速定位相关书籍,加快查找速度。

索引分类

  • 普通索引:key(字段1,字段2,…)
  • 唯一索引:unique key(字段1,字段2,…)
  • 主键索引:primary key(字段1) 只能有一个
  • 全文索引:fulltext(字段1)
  • 组合索引:index(字段1,字段2,…)
  • 外键约束

索引功能

  • 索引是应用在MySQL查询语句的条件(where语句的条件)
  • 索引也是一张表,保存了主键和索引字段,并指向实体表的记录

索引缺点

  • 虽然提高了查询速度(select),但是降低了更新表的速度(insert、update、delete)
  • MySQL不仅要保存数据,还要保存索引文件;建立索引会占用磁盘空间的索引文件

普通索引

几种不同的创建方式

代码语言:javascript
复制
-- 创建表的时候直接指定
create table user(
    id int unsigned not null auto_increment,   -- auto_increment 和 primary key()必须连用,加快查询速度
    user_name varchar(20) not null,
    user_age tinyint(20) not null,
    user_email varchar(20) not null,
    password varchar(30) not null,
    primary key(id),    -- 主键    
    unique(user_name),  -- 唯一
    key(user_age),  -- 普通索引
    index MyIndex (user_email(length))  -- 普通索引
); 

-- 基本创建
create index myindex on table_name(username(length));

-- 修改表结构的时候添加索引
alter table tablename add index indexname(colunmName);

删除索引

代码语言:javascript
复制
drop index [indexname] on table_name;

唯一索引

索引列的值必须唯一,但是允许有空值;如果是组合索引,则列值的组合必须唯一

创建索引
代码语言:javascript
复制
-- 创建索引
create unique index indexname on tablename(username(length))

-- 修改表结构的时候创建索引
alter table tablename add unique indexname (user(length))

-- 创建表的时候指定唯一索引
create table tablename(
    id int not null,
    username varchar(20) not null,
    unique indexname (username(length))
);

-- 实例创建:添加索引
alter table tablename add index (c);
删除索引
代码语言:javascript
复制
alter table tablename drop index c'
使用alter来创建索引
代码语言:javascript
复制
alter table tablename add primary key (column_list);  -- 添加主键
alter table tablename add unique index_name(column_list);   -- 添加唯一索引
alter table tablename add index indexname(column_list);  -- 普通索引
alter table tablename add fulltext indexname(column_list);  -- 添加全文索引
关于fulltext

解决模糊查询问题,只支持英文;默认查询的内容有空格

  • MyISAM支持全文索引
  • InnoDB在MySQL5.6后开始支持全文索引

显示索引信息

使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加\G来格式化输出信息

代码语言:javascript
复制
show index from table_name; \G  -- 格式化输出信息
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 索引分类
  • 索引功能
  • 索引缺点
  • 普通索引
  • 唯一索引
    • 创建索引
      • 删除索引
        • 使用alter来创建索引
          • 关于fulltext
          • 显示索引信息
          相关产品与服务
          云数据库 SQL Server
          腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档