本文是关于MySQL中索引的基础知识。主要讲了索引的意义与原理、创建与删除的操作。并未涉及到索引的数据结构、高性能策略等。

一、概述

1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能。

数据库在检索数据时,如果没有索引,则只能从第一条记录开始逐条查找,效率很低,添加索引可以明显提升效率。

2.索引的原理:索引存储了数据库的表中的关键字的值。关键字是索引用来搜索数据的依据,可以是一列,也可以是几列,还可以是一列的开头部分(前缀索引)。

需要查找某条记录时,先在索引中查找该记录关键字的值,然后根据匹配的索引记录找到对应的数据行。

3.其他要点:

(1)一个表可以创建多个索引;但由于索引文件存储在硬盘上,每次更新数据都会自动维护索引,从而对硬盘进行读写,所以不宜创

建过多的索引。

(2)查询索引时,可以查询整个关键字,也可以查询关键字中的部分列,还可以只查询某一列值的开头部分(前缀查找)。

(3)创建主键约束、唯一性约束时,会自动创建主索引、唯一性索引,索引名和约束名相同,删除了索引也就是删除了约束;

创建外键约束时,会自动创建一个普通索引,索引名和约束名相同。

二、索引的创建

1.关键字的选取原则:

优先选择这些列作为关键字:

  • 离散度高的列。也就是说,选为关键字的列的值,重复越少越好。
  • 占用存储空间少、储存空间固定的列。比如,INT比CHAR更适合做关键字,CHAR比TEXT更适合做关键字。
  • 经常被WHERE、GROUP BY、ORDER BY所操作的列。因为创建索引的意义之一就是提高检索效率,而检索是通过SELECT语句实现的。因此,应将SELECT语句中常用的操作列优先选为关键字。、
避免选取从不出现在WHERE子句中的列,和更新频繁的列
2.创建索引
(1)创建表时创建索引:
CREATE TABLE 表名(
列1 数据类型 约束条件,
列2 数据类型 约束条件,
……
其他约束条件,
索引类型 INDEX 索引名(列名(长度))
)引擎、字符集、校对方式设定;

其中:

  • 索引类型:可省略,也可选择UNIQUE和FULLTEXT(全文索引:查询大字符串,只能建立在CHAR,VARCHAR,TEXT列上)
  • 长度:可省略,是用于前缀索引中,设定该列字符长度的
(2)在已有表上创建索引:
CREATE 索引类型 INDEX 索引名 ON 表名 (列名(长度));

ALTER TABLE 表名 ADD 索引类型 INDEX 索引名(列名(长度));

3.查看索引

SHOW INDEX FROM 表名;
SHOW KEYS FROM 表名;

4.删除索引

DROP INDEX 索引名 ON 表名;

MySQL中索引的基础知识的更多相关文章

  1. ASP.NET中的C#基础知识

    ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...

  2. MYSQL注入天书之基础知识

    第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表 ...

  3. 一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.简述MySQL中索引类型对数据库的性能的影响 2.RDB和AOF机制 3.Redis的过期键的删除策略 4.Redis ...

  4. MySQL 中索引的限制

    MySQL 中索引的限制在使用索引的同时,我们还应该了解在MySQL 中索引存在的限制,以便在索引应用中尽可能的避开限制所带来的问题.下面列出了目前MySQL 中索引使用相关的限制.1. MyISAM ...

  5. MySQL索引,MySQL中索引的限制?

    MySQL中索引的限制: 1.MyISAM存储引擎引键的长度综合不能超过1000字节: 2.BLOB和TEXT类型的列只能创建前缀索引: 3.MySQL目前不支持函数索引: 4.使用!= 或者< ...

  6. day29—JavaScript中DOM的基础知识应用

    转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...

  7. (转) MySQL中索引的限制

    转:http://book.51cto.com/art/200906/132459.htm 8.4.8  MySQL中索引的限制 在使用索引的同时,还应该了解MySQL 中索引存在的限制,以便在索引应 ...

  8. MySQL中索引和优化的用法总结

    1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...

  9. javascript中BOM部分基础知识总结

    一.什么是BOM      BOM(Browser Object Document)即浏览器对象模型.      BOM提供了独立于内容 而与浏览器窗口进行交互的对象:      由于BOM主要用于管 ...

随机推荐

  1. [leetcode-599-Minimum Index Sum of Two Lists]

    Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of favorite ...

  2. Exameple014实现html中checkbox的全选,反选和全不选(1)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. css画三角形,梯形

    (根据调节边框的宽度来调节三角形形状) <!DOCTYPE html> <html> <head> <meta http-equiv="Conten ...

  4. Configure: error: freetype.h not found. 的解决办法

    出现 Configure: error: freetype.h not found. 的解决办法 CentOS yum install freetype-devel Debian apt-get in ...

  5. Spring MVC 文件下载时候 发现IE不支持

    @RequestMapping("download") public ResponseEntity<byte[]> download(Long fileKey) thr ...

  6. Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序

    Android系统--输入系统(十五)实战_使用GlobalKey一键启动程序 1. 一键启动的过程 1.1 对于global key, 系统会根据global_keys.xml发送消息给某个组件 & ...

  7. python+selenium自动化测试环境安装

    因为自己安装自动化测试环境时,遇到过许多问题,自己整理了一下安装的步骤,感谢那些帮助过我的人. 1.安装python,我装的是3.5版本,网络上也有许多安装步骤,照着就可以了(其实一直下一步也行) 不 ...

  8. Python爬虫从入门到放弃(十五)之 Scrapy框架中Spiders用法

    Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设 ...

  9. MAC本上appium连接真机

    简单介绍一下appium连接ios真机测试环境的软件安装及配置过程: 目前我用的是desktop版本的appium, 所以MAC版本必须要升级到10.12以上,Xcode版本必须要在8.0以上,否则亲 ...

  10. OI内的排列与组合(简单版)

    §1基本原理 △让我们来看下面问题: 从甲地到乙地,可以乘火车,也可以乘汽车,还可以乘轮船.一天中,火车有4班,汽车有2班,轮船有3班.那么,一天中乘坐这些交通工具从甲地到乙地共有多少种不同走法?△分 ...