MySQL中索引的基础知识
本文是关于MySQL中索引的基础知识。主要讲了索引的意义与原理、创建与删除的操作。并未涉及到索引的数据结构、高性能策略等。
一、概述
1.索引的意义:用于提高数据库检索数据的效率,提高数据库性能。
数据库在检索数据时,如果没有索引,则只能从第一条记录开始逐条查找,效率很低,添加索引可以明显提升效率。
2.索引的原理:索引存储了数据库的表中的关键字的值。关键字是索引用来搜索数据的依据,可以是一列,也可以是几列,还可以是一列的开头部分(前缀索引)。
需要查找某条记录时,先在索引中查找该记录关键字的值,然后根据匹配的索引记录找到对应的数据行。
3.其他要点:
(1)一个表可以创建多个索引;但由于索引文件存储在硬盘上,每次更新数据都会自动维护索引,从而对硬盘进行读写,所以不宜创
建过多的索引。
(2)查询索引时,可以查询整个关键字,也可以查询关键字中的部分列,还可以只查询某一列值的开头部分(前缀查找)。
(3)创建主键约束、唯一性约束时,会自动创建主索引、唯一性索引,索引名和约束名相同,删除了索引也就是删除了约束;
创建外键约束时,会自动创建一个普通索引,索引名和约束名相同。
二、索引的创建
1.关键字的选取原则:
优先选择这些列作为关键字:
- 离散度高的列。也就是说,选为关键字的列的值,重复越少越好。
- 占用存储空间少、储存空间固定的列。比如,INT比CHAR更适合做关键字,CHAR比TEXT更适合做关键字。
- 经常被WHERE、GROUP BY、ORDER BY所操作的列。因为创建索引的意义之一就是提高检索效率,而检索是通过SELECT语句实现的。因此,应将SELECT语句中常用的操作列优先选为关键字。、
CREATE TABLE 表名(
列1 数据类型 约束条件,
列2 数据类型 约束条件,
……
其他约束条件,
索引类型 INDEX 索引名(列名(长度))
)引擎、字符集、校对方式设定;
其中:
- 索引类型:可省略,也可选择UNIQUE和FULLTEXT(全文索引:查询大字符串,只能建立在CHAR,VARCHAR,TEXT列上)
- 长度:可省略,是用于前缀索引中,设定该列字符长度的
CREATE 索引类型 INDEX 索引名 ON 表名 (列名(长度));
或
ALTER TABLE 表名 ADD 索引类型 INDEX 索引名(列名(长度));
3.查看索引
SHOW INDEX FROM 表名;
SHOW KEYS FROM 表名;
4.删除索引
DROP INDEX 索引名 ON 表名;
MySQL中索引的基础知识的更多相关文章
- ASP.NET中的C#基础知识
ASP.NET中的C#基础知识 说明:asp.net作为一种开发框架现在已经广为应用,其开发的基础除了前端的html.css.JavaScript等后端最重要的语言支持还是C#,下面将主要用到的基础知 ...
- MYSQL注入天书之基础知识
第一部分/page-1 Basic Challenges Background-1 基础知识 此处介绍一些mysql注入的一些基础知识. (1)注入的分类---仁者见仁,智者见智. 下面这个是阿德玛表 ...
- 一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.简述MySQL中索引类型对数据库的性能的影响 2.RDB和AOF机制 3.Redis的过期键的删除策略 4.Redis ...
- MySQL 中索引的限制
MySQL 中索引的限制在使用索引的同时,我们还应该了解在MySQL 中索引存在的限制,以便在索引应用中尽可能的避开限制所带来的问题.下面列出了目前MySQL 中索引使用相关的限制.1. MyISAM ...
- MySQL索引,MySQL中索引的限制?
MySQL中索引的限制: 1.MyISAM存储引擎引键的长度综合不能超过1000字节: 2.BLOB和TEXT类型的列只能创建前缀索引: 3.MySQL目前不支持函数索引: 4.使用!= 或者< ...
- day29—JavaScript中DOM的基础知识应用
转行学开发,代码100天——2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通 ...
- (转) MySQL中索引的限制
转:http://book.51cto.com/art/200906/132459.htm 8.4.8 MySQL中索引的限制 在使用索引的同时,还应该了解MySQL 中索引存在的限制,以便在索引应 ...
- MySQL中索引和优化的用法总结
1.什么是数据库中的索引?索引有什么作用? 引入索引的目的是为了加快查询速度.如果数据量很大,大的查询要从硬盘加载数据到内存当中. 2.InnoDB中的索引原理是怎么样的? InnoDB是Mysql的 ...
- javascript中BOM部分基础知识总结
一.什么是BOM BOM(Browser Object Document)即浏览器对象模型. BOM提供了独立于内容 而与浏览器窗口进行交互的对象: 由于BOM主要用于管 ...
随机推荐
- stringsteam使用之整型转字符串
最近需要用到整型转字符串的操作,学习了stringstream一些皮毛. 首先需要包含头文件. #include<sstream> 然后用流操作的方式将值传递给stringstream对象 ...
- 【LeetCode】73. Set Matrix Zeroes
题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fo ...
- C#基础:.NET环境下WebConfig的加密
在将ASP.NET项目部署到服务器上时,内网环境下Web.Config往往是直接复制过去.对于外网环境,则需要对Web.Config文件进行加密. .NET环境下一共提供了2种方式的加密功能,分别是D ...
- python实现希尔排序(已编程实现)
希尔排序: 观察一下”插入排序“:其实不难发现她有个缺点: 如果当数据是”5, 4, 3, 2, 1“的时候,此时我们将“无序块”中的记录插入到“有序块”时,估计俺们要崩盘, 每次插入都要移动位置,此 ...
- winform利用委托delegate进行窗体间通信,相同标题已经存在??
前段时间学习委托,感觉很模糊的样子,也做过许多实例,但是项目中一直没有用到,今天在项目中遇到一个很简单的例子,现在拿出来,做一个简单的记录. 要求:将弹出框里勾选的内容返回到主面板上. 工具:委托. ...
- h5 新增的invalid事件,貌似有很大bug
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- [图形学] 计算机图形学 with OpenGL开篇
<计算机图形学>(第四版)正在学习中,学习目的是为了在Unity中使用shader实现不同的渲染效果. 希望在这里能把学习过程中学到的知识和遇到的问题记录下来. 工作环境是:Xcode 8 ...
- VB6之GDI+加载PNG图片
原生的VB6不支持PNG个图片,因为刚有VB的时候还没有PNG的概念呢.不过,利用GDI+加载解析个PNG简直是砍瓜切菜般简单. GDI+的模块是我在网上下载的,地址应该是:http://vistas ...
- gulp环境搭建
简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:它不仅对网站资源进行优化,而且在开发过程中很多重复的任务,他可以通过明确的工具自动完成,使用它我们不仅可以很愉快的编写代码 ...
- python机器学习实战(二)
python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇noteboo ...