学习MySQL数据库中表的索引维护(新增和删除)
 
    索引的好处:
            提高查询的效率
            可限定特定的资料(如唯一)
    索引的不足:
            如果过多的索引,会影响Insert,Update的速率,因为资料插入和更新同时也会维护索引。
            消耗更多的存储空间
    索引按列可分为,单列索引和组合索引。单列只包含表中的一列,组合索引可包含当前表中多列栏位。
 
    创建普通索引
        CREATE INDEX <index_name> ON <tab_name>(<col_name>(length));
        如果列的类型是CHAR,VARCHAR可以不指定length的值。
        如果列的类型是BLOB,TEXT则需指定length的值
 
    创建表时建立索引
        CREATE TABLE <tab_name>(
            <col_name> TYPE,....
            [INDEX_TYPE] <index_name>(<col_name>(length))
            engine=InnoDB default charset=utf8;

mysql> create table index_tab03(
-> id int,
-> col01 varchar(20),
-> index index_01(col01)
-> )engine=InnoDB default charset=utf8;
Query OK, 0 rows affected (0.01 sec) mysql> desc index_tab03;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| col01 | varchar(20) | YES | MUL | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec) mysql> show index from index_tab03\G
*************************** 1. row ***************************
Table: index_tab03
Non_unique: 1
Key_name: index_01
Seq_in_index: 1
Column_name: col01
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE
Comment:
1 row in set (0.00 sec)
m
    
    ALTER语句维护索引
 
         ALTER TABLE <tab_name> ADD PRIMARY KEY(<column_list>);#增加一个主键,唯一和非空
         ALTER TABLE <tab_name> ADD UNIQUE <index_name>(<column_list>);#增加一个唯一索引,列中可以为NULL并且可以有多次
         ALTER TABLE <tab_name> ADD INDEX <index_name>(<column_list>);#增加一个普通索引
         ALTER TABLE <tab_name> ADD FULLTEXT <index_name>(<column_list>);增加一个全文索引,注意只有MyISAM引擎支持

mysql> alter table index_tab01 add primary key(id,col01);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table index_tab01 add index indx_01(col01);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table index_tab01 add fulltext indx_02(col01,col02(300));
ERROR 1214 (HY000): The used table type doesn't support FULLTEXT indexes mysql> alter table index_tab01 engine=MyISAM;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table index_tab01 add fulltext index_02(col01,col02(30));
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> show index from index_tab01\G
*************************** 1. row ***************************
Table: index_tab01
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 1
Column_name: id
Collation: A
Cardinality: NULL
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
*************************** 2. row ***************************
Table: index_tab01
Non_unique: 0
Key_name: PRIMARY
Seq_in_index: 2
Column_name: col01
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
*************************** 3. row ***************************
Table: index_tab01
Non_unique: 0
Key_name: index_un
Seq_in_index: 1
Column_name: col01
Collation: A
Cardinality: 0
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
*************************** 4. row ***************************
Table: index_tab01
Non_unique: 1
Key_name: indx_01
Seq_in_index: 1
Column_name: col01
Collation: A
Cardinality: NULL
Sub_part: NULL
Packed: NULL
Null:
Index_type: BTREE
Comment:
*************************** 5. row ***************************
Table: index_tab01
Non_unique: 1
Key_name: index_02
Seq_in_index: 1
Column_name: col01
Collation: NULL
Cardinality: NULL
Sub_part: NULL
Packed: NULL
Null:
Index_type: FULLTEXT
Comment:
*************************** 6. row ***************************
Table: index_tab01
Non_unique: 1
Key_name: index_02
Seq_in_index: 2
Column_name: col02
Collation: NULL
Cardinality: NULL
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: FULLTEXT
Comment:
6 rows in set (0.00 sec)
    索引删除
 
        DROP INDEX <index_name> ON <tab_name>;
        ALTER TABLE <tab_name> DROP PRIMARY KEY;
        ALTER TABLE <tab_name> DROP INDEX <index_name>;

mysql> alter table index_tab01 drop primary key;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> alter table index_tab01 drop index index_02;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0 mysql> drop index index_01 on index_tab01;
 
    查看索引结构
        SHOW INDEX FROM <tab_name>\G

MySQL->索引的维护[20180504]的更多相关文章

  1. MySQL索引的维护与优化——查找重复及冗余索引

    方法一:通过MySQL的information_schema数据库 查找重复与冗余索引 SELECT a.table_schema AS '数据库', a.table_name AS '表名', a. ...

  2. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

  3. 【转】MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  4. [转]MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  5. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  6. MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

  7. mysql索引的使用和优化

    参考: http://blog.csdn.net/xluren/article/details/32746183 http://www.cnblogs.com/hustcat/archive/2009 ...

  8. 理解MySQL——索引与优化

    转自:理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存 ...

  9. mysql索引的使用[上]

    数据库的explain关键字和联合索引优化: 本篇文章简单的说一下mysql查询的优化以及explain语句的使用.(新手向) 因为这篇文章是面向查询的,直观一点,首先我们创建一个表:student ...

  10. [纯干货] MySQL索引背后的数据结构及算法原理

    摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BT ...

随机推荐

  1. OkHttp3源码详解(三) 拦截器

    1.构造Demo 首先构造一个简单的异步网络访问Demo: OkHttpClient client = new OkHttpClient(); Request request = new Reques ...

  2. JAVA后台框架优化之日志篇

    1.日志规范 各业务系统日志需要统一,以方便查看.收集日志, 日后统一ELK日志管理,以下为项目的日志配置, 这是兼容当前系统的日志,以后推行微服架构时会有变动,但日志存放方式不会改变,日后会推行sp ...

  3. c# webservice中访问http和https的wsdl,生成的配置节点的不同之处

    http: https:

  4. Django objects.all() ,objects.get() ,objects.filter()之间的区别

    ret=UserInfo.objects.all() all返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据. ret=UserIn ...

  5. javascript requestAnimationFrame vs. setTimeout

    在做javascript动画时,我们常常使用的方法就是通过setTimeout调用告诉浏览器每隔20ms执行一段js代码来对dom对象执行操作,这个貌似没有什么问题,但是当深入理解计算机的fps以及浏 ...

  6. Hadoop配置文件详解

    1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知 ...

  7. iOS9 News 应用

    iOS9 News 应用 iOS9 中国区虽然没有 News 应用,但最新的开发工具中是有的,以下是笔者截取的模拟器gif图,供君欣赏:    

  8. 6、tornado

    3反射(reflect) tornado是一款异步非阻塞高效的web框架 自定制session.form.auth,以及第三方ORM框架sqlachme

  9. Exchange Server 产品路线图 及 补丁下载

    Exchange Server RU listExchange Server and Update Rollup Build Numbers -TechNet Articles -United Sta ...

  10. 组合数计算-java

    排列组合是计算应用经常使用的算法,通常使用递归的方式计算,但是由于n!的过于大,暴力计算很不明智.一般使用以下两种方式计算. 一,递归的思想:假设m中取n个数计算排列组合数,表示为comb(m,n). ...