首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL——索引基础

MySQL——索引基础

作者头像
撸码那些事
发布2018-08-20 14:51:13
3340
发布2018-08-20 14:51:13
举报
文章被收录于专栏:撸码那些事撸码那些事

本篇文章,我们将从索引基础开始,介绍什么是索引以及索引的几种类型,然后学习如何创建索引以及索引设计的基本原则。

本篇文章中用于测试索引创建的user表的结构如下:

什么是索引

索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构 ——《高性能MySQL》

我们需要知道索引其实是一种数据结构,其功能是帮助我们快速匹配查找到需要的数据行,是数据库性能优化最常用的工具之一。其作用相当于超市里的导购员、书本里的目录。

索引类型

可以使用 SHOW INDEX FROM table_name;查看索引详情

主键索引 PRIMARY KEY

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

注意:一个表只能有一个主键

唯一索引 UNIQUE

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

创建唯一索引:

ALTER TABLE table_name ADD UNIQUE(column);

创建唯一组合索引:

ALTER TABLE table_name ADD UNIQUE(column1,column2);

普通索引 INDEX

最基本的索引,它没有任何限制。

创建普通索引:

ALTER TABLE table_name ADD INDEX index_name(column);

组合索引 INDEX

组合索引,即一个索引包含多个列。多用于避免回表查询。

创建组合索引:

ALTER TABLE table_name ADD INDEX index_name(column1,column2,column3);

全文索引 FULLTEXT

全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。

创建全文索引

ALTER TABLE table_name ADD FULLTEXT(column);

索引一经创建不能修改,如果要修改索引,只能删除重建。可以使用 DROP INDEX index_name ON table_name;删除索引。

索引设计的原则

  1. 适合索引的列是出现在where子句中的列,或者连接子句中指定的列
  2. 基数较小的类,索引效果较差,没有必要在此列建立索引
  3. 使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间
  4. 不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 撸码那些事 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是索引
  • 索引类型
  • 索引设计的原则
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档