博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL——索引基础
阅读量:6844 次
发布时间:2019-06-26

本文共 1235 字,大约阅读时间需要 4 分钟。

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

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

mark

什么是索引

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

——《高性能MySQL》

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

索引类型

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

mark

  1. 主键索引 PRIMARY KEY

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

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

    mark

  2. 唯一索引 UNIQUE

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

    可以通过ALTER TABLE table_name ADD UNIQUE (column);创建唯一索引

    mark

    mark

    可以通过ALTER TABLE table_name ADD UNIQUE (column1,column2);创建唯一组合索引

    mark

    mark

  3. 普通索引 INDEX

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

    可以通过ALTER TABLE table_name ADD INDEX index_name (column);创建普通索引

    mark

    mark

  4. 组合索引 INDEX

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

    可以通过ALTER TABLE table_name ADD INDEX index_name(column1, column2, column3);创建组合索引

    mark

    mark

  5. 全文索引 FULLTEXT

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

    可以通过ALTER TABLE table_name ADD FULLTEXT (column);创建全文索引

    mark

    mark

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

索引设计的原则

  1. 适合索引的列是出现在where子句中的列,或者连接子句中指定的列

  2. 基数较小的类,索引效果较差,没有必要在此列建立索引

  3. 使用短索引,如果对长字符串列进行索引,应该指定一个前缀长度,这样能够节省大量索引空间

  4. 不要过度索引。索引需要额外的磁盘空间,并降低写操作的性能。在修改表内容的时候,索引会进行更新甚至重构,索引列越多,这个时间就会越长。所以只保持需要的索引有利于查询即可。

参考

  • 《深入浅出MySQL》

作者:
微信公众号:
AFdec5f65k.jpg?imageslim
来源:
声明:本文为博主学习感悟总结,水平有限,如果不当,欢迎指正。如果您认为还不错,不妨点击一下下方的【推荐】按钮,谢谢支持。转载与引用请注明出处。

转载于:https://www.cnblogs.com/songwenjie/p/9410009.html

你可能感兴趣的文章
orzdba安装与使用
查看>>
LVS的三种负载均衡技术,八大负载调度算法
查看>>
linux 常用小命令
查看>>
AIX系列------ISO挂载
查看>>
重启citrix服务器,无法打开发布的程序
查看>>
按照文件名中包含的版本号信息对文件名列表进行排序
查看>>
jQuery学习笔记3:过滤器
查看>>
第四课:单用户及救援模式(一)
查看>>
zabbix企业应用:利用自动发现监控IIS站点
查看>>
table 去掉 td之间间距
查看>>
根据status信息对MySQL服务器进行优化-1
查看>>
sui picker,datetimepicker,citypicker代码整理
查看>>
Redis基础教程第2节 Redis和NoSql 介绍与应用场景
查看>>
CentOS6.6下设置grub密码方法
查看>>
Linux下DHCP服务器配置
查看>>
创建数据库恢复
查看>>
一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-使用UDA操纵SQL语句...
查看>>
VS2010与IIS Express
查看>>
jdis操作redis cluster
查看>>
算法学习之路|最小生成树——prime算法
查看>>