所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找。MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

建立索引会占用磁盘空间的索引文件。

一、索引的类型

1.UNIQUE唯一索引

不可以出现相同的值,可以有NULL值。

2.INDEX普通索引

允许出现相同的索引内容。

3.PRIMARY KEY主键索引

不允许出现相同的值,且不能为NULL值,一个表只能有一个primary_key索引。

4.fulltext index 全文索引

上述前三种索引都是针对列的值发挥作用,但全文索引,可以针对值中的某个单词,比如一篇文章中的某个词,然而实际效用低下,因为只有myisam以及英文支持,并且效率让人不敢恭维。

二、索引的创建

索引的创建方法有3种:

1.直接打开设计表,在索引栏目下添加索引。

2.CREATE INDEX可对表增加普通索引或UNIQUE索引。

--例:只能添加这两种索引,不能添加主键索引和全文索引

CREATE INDEX index_name ON table_name (column_list)

CREATE UNIQUE INDEX index_name ON table_name (column_list)

eg:CREATE INDEX idx_ename ON emp(ename)

3.ALTER TABLE适用于表创建完毕之后再添加。

ALTER TABLE 表名 ADD 索引类型 (unique,primary key,fulltext,index)[索引名](字段名)

ALTER TABLE table_name ADD INDEX index_name (column_list) -- 索引名,可要可不要;如果不要,当前的索引名就是该字段名。

eg:ALTER TABLE dept ADD INDEX idx_deptno (deptno)   #普通索引,索引名为idx_deptno

  ALTER TABLE dept ADD INDEX(deptno)    #普通索引,索引名默认为deptno

ALTER TABLE table_name ADD UNIQUE (column_list)    #唯一索引

ALTER TABLE table_name ADD PRIMARY KEY (column_list)   #主键索引

eg:ALTER TABLE dept ADD PRIMARY KEY idx_deptno(deptno)

ALTER TABLE table_name ADD FULLTEXT KEY (column_list)  #全文索引,一般不用

三、索引的删除

1.直接打开设计表,在索引栏目下删除索引。

2.DROP INDEX:

DROP INDEX index_name ON table_name

eg:DROP INDEX deptno ON dept

3.ALTER TABLE:

ALTER TABLE table_name DROP INDEX index_name

eg:ALTER TABLE dept DROP INDEX deptno

PS:这两句都是等价的,都是删除掉table_name中的索引index_name

4.删除主键索引

ALTER TABLE table_name DRP PRIMARY KEY -- 删除主键索引,注意主键索引只能用这种方式删除

eg:ALTER TABLE dept DROP PRIMARY KEY

四、索引的查看与更改

1.索引的查看

show index from tablename

eg:SHOW INDEX from dept

2.索引的更改

更改个毛线,删掉重建一个既可

 

 

2019.6.11_MySQL进阶一:索引的更多相关文章

  1. 2019.6.11_MySQL进阶二:主键与外键

    通过图形界面(UI)创建外键 打开设计表,在对应的栏位填写相应的内容.其中FK_deptno是限制名 # 先给主表建立主键   ALTER TABLE dept ADD PRIMARY KEY(dep ...

  2. 2019.6.11_MySQL进阶三:临时表

    临时表 临时表主要应用于保存一些临时数据.临时表只在当前连接可见.当关闭连接时,MySQL会自动删除表并且释放空间.临时表在MySQL 3.23版本中添加,低于 3.23版本就无法使用MySQL的临时 ...

  3. iOS进阶篇索引,标记和自定义的table

    一.带索引目录的表视图 ①效果图 图1 带索引的列表 ② 数据源 本想获取通讯录中得名字,但为了用模拟器调试方便,就写死了数据,所以也只写了部分字母,总之有那么点意思就成 @interface Vie ...

  4. 数据库 MySQL进阶之索引

    数据库的索引非常重要,基本面试数据库的问题都在索引上,所以这里小编整理出来,一方面为了自己复习,一方面也方便大家. 一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么 ...

  5. mysql进阶(二)索引简易教程

    Mysql索引简易教程 基本概念 索引是指把你设置为索引的字段A的内容储存在一个独立区间S里,里面只有这个字段的内容.在找查这个与这个字段A的内容时会直接从这个独立区间里查找,而不是去到数据表里查找. ...

  6. MySQL 进阶之索引

    一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么什么样的数据结构可以作为索引呢? B-tree是最常用的用于索引的数据结构.因为它们是时间复杂度低, 查找.删除.插 ...

  7. SQLite进阶-16.索引

    目录 索引 创建索引 查看索引 删除索引 创建索引的注意项 索引使用(Indexed By) 索引 索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索.简单地说,索引是一个指向表中数 ...

  8. 2019.10.9php进阶

    <?php header("Content-type:text/html;charset:utf-8"); if ($_FILES["file"][&qu ...

  9. MySQL进阶之索引

    一.索引的本质: 数据库查询是数据库的最主要的功能之一,数据库系统的设计者从查询算法的角度对数据库进行了一定的优化. 最基本的顺序查找算法的复杂度为O(n),在数据量很大的时候算法的效率是很低的.虽然 ...

随机推荐

  1. 【tf.keras】ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:1977)

    问题描述 tf.keras 在加载 cifar10 数据时报错,ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption ...

  2. vue/cli2.0优化

    vue/cli2.0 脚手架 在项目写完了之后, 运行npm run build --report可以看出这个项目的资源占比情况.可以看出整个项目哪一个资源在整个项目占比最大.它会自动打开一个可视化的 ...

  3. PHP 自带的验证函数 FILTER_VAR()

    常见的用法 检查邮箱的格式是否合法 if (filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)) { } 更多相关的 过滤参数: ID 名称 描述 ...

  4. (转)vue-router原理

    转载地址:https://segmentfault.com/a/1190000014822765 随着前端应用的业务功能起来越复杂,用户对于使用体验的要求越来越高,单面(SPA)成为前端应用的主流形式 ...

  5. python的路径问题

    ## 文件路径出错问题 """ 如何获取与当前文件相关的地址 """ import os # 当前文件的完整路径 print(__file_ ...

  6. acwing 17. 从尾到头打印链表

    题目地址 https://www.acwing.com/problem/content/description/18/ 来源:剑指Offer 输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值. ...

  7. antd配置config-overrides.js文件

    下载antd 包 npm install antd 下载依赖包(定义组件按需求打包) npm install react-app-rewired customize-cra babel-plugin- ...

  8. Noip2017Day2T2 宝藏

    题目链接 problem 有\(n\)个点,\(m\)条无向边,选择一个点开始开辟道路.开辟一条长度为\(L\)的链接\(u,v\)的道路会花费\(L \times K\),K表示从选择的最初点到\( ...

  9. 【洛谷5368】[PKUSC2018] 真实排名(组合数学)

    点此看题面 大致题意: 有\(n\)个数字,定义一个数的排名为不小于它的数的个数.现要随机将其中\(k\)个数乘\(2\),求对于每个数有多少种方案使其排名不变. 分类讨论 对于这种题目,我们可以分类 ...

  10. Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) A. Math Problem 水题

    A. Math Problem Your math teacher gave you the following problem: There are n segments on the x-axis ...