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主要用于管 ...
随机推荐
- 【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 ...
- php下redis的安装教程
1.得有php的环境,推荐使用appserv,下载链接 链接: http://pan.baidu.com/s/1cHqSOY 密码: b8w2 2.安装redis 下载链接 链接: http://pa ...
- create groups 和 create folder reference
当将文件拖入工程中的时候会出现这个对话框,这个对话框中在Added folders中有两种选择:Create groups 和 Create folder references 这两种的区别是 ...
- JS综合练习
练习一.任意数求和(最多输入十位数),输入999终止 运行代码 <!DOCTYPE html><html> <head> <meta charset=&quo ...
- MyEclipse 2014 破解补丁及激活步骤
针对 MyEclipse Trail Expired 问题的解决方法 我用网上找的注册类生成注册码的方式注册了一下,重启MyEclipse仍然会有提示弹窗,不过剩余时间由 4 days变成了 5 da ...
- Android studio出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 400 Bad Reques的解决办法
最近更新了一下Android Studio,在导入新项目之后出现Error:Unable to tunnel through proxy. Proxy returns "HTTP/1.1 4 ...
- Python3控制结构与函数
1.if语句的另一种写法: expression1 if boolean_expression else expression2 boolean_expression为true时使用expressio ...
- Redis主从复制及状态监测
参考链接:http://www.cnblogs.com/morvenhuang/p/4184262.html #配置redis主从复制: #安装redis- master slave #修改slave ...
- localStorage与location的用法
1.localStorage 是h5提供的客户端存储数据的新方法: 之前,这些都是由 cookie 完成的.但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 coo ...
- IT小天博客APP版本
今天弄了一个博客的APP版本,感觉还不错,欢迎下载体验. 共 1 张图片 APP名称:[IT小天博客APP] APP版本:1.3 APP上线时间:2017-06-29 下载地址:点击下载