美文网首页
【转】MySQL索引操作命令小结

【转】MySQL索引操作命令小结

作者: 天下熙熙皆为利来啊 | 来源:发表于2017-08-31 10:14 被阅读113次

MySQL索引操作命令小结

这篇文章主要介绍了MySQL索引操作命令小结,本文讲解了创建索引、查询索引、删除索引等内容,需要的朋友可以参考下

创建索引

创建索引的语法是:

创建索引的语法是:

CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEXindex_name

[USING index_type]

ONtbl_name (index_col_name,...)

index_col_name:

col_name [(length)] [ASC|DESC]

对于CHAR和VARCHAR列,只用一列的一部分就可创建索引。创建索引时,使用col_name(length)语法,对前缀编制索引。前缀包括每列值的前length个字符。BLOB和TEXT列也可以编制索引,但是必须给出前缀长度。

此处展示的语句用于创建一个索引,索引使用列名称的前10个字符。

CREATEINDEXpart_of_nameONcustomer (name(10));

因为多数名称的前10个字符通常不同,所以此索引不会比使用列的全名创建的索引速度慢很多。另外,使用列的一部分创建索引可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。

前缀最长为255字节。对于MyISAM和InnoDB表,前缀最长为1000字节。注意前缀的限长以字节计,而CREATE INDEX语句中的前缀长度指的是字符的数目。对于使用多字节字符集的列,在指定列的前缀长度时,要考虑这一点。

在MySQL中:

·只有当您正在使用MyISAM, InnoDB或BDB表类型时,您可以向有NULL值的列中添加索引。

·只有当您正在使用MyISAM, BDB或InnoDB表类型时,您可以向BLOB或TEXT列中添加索引。

一个index_col_name规约可以以ASC或DESC为结尾。这些关键词将来可以扩展,用于指定递增或递减索引值存储。目前,这些关键词被分析,但是被忽略;索引值均以递增顺序存储。

部分储存引擎允许在创建索引时指定索引类型。index_type指定语句的语法是USING type_name。不同的储存引擎所支持的type_name值已显示在下表中。如果列有多个索引类型,当没有指定index_type时,第一个类型是默认值。

存储引擎               |               允许的索引类型

MyISAM                |               BTREE

InnoDB                  |              BTREE

MEMORY/HEAP   |              HASH, BTREE

示例:

CREATETABLElookup (idINT) ENGINE = MEMORY;

CREATEINDEXid_index USING BTREEONlookup (id);

TYPE type_name可以作为USING type_name的同义词,用于指定索引类型。但是,USING是首选的格式。另外,在索引规约语法中,位于索引类型前面的索引名称不能使用TYPE。这是因为,与USING不同,TYPE不是保留词,因此会被认为是一个索引名称。

如果您指定的索引类型在给定的储存引擎中不合法,但是有其它的索引类型适合引擎使用,并且不会影响查询功能,则引擎应使用此类型。

FULLTEXT索引只能对CHAR, VARCHAR和TEXT列编制索引,并且只能在MyISAM表中编制。

SPATIAL索引只能对空间列编制索引,并且只能在MyISAM表中编制。

使用alter的方法创建索引

altertabletable_nameaddindexindex_name (column_list) ;

altertabletable_nameaddunique(column_list) ;

altertabletable_nameaddprimarykey(column_list) ;

查询索引

SHOWINDEXFROMtable_name;

删除索引

dropindexindex_nameontable_name ;

altertabletable_namedropindexindex_name ;

altertabletable_namedropprimarykey;

其中,在前面的两条语句中,都删除了table_name中的索引index_name。而在最后一条语句中,只在删除PRIMARY KEY索引中使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。

相关文章

  • 【转】MySQL索引操作命令小结

    MySQL索引操作命令小结 这篇文章主要介绍了MySQL索引操作命令小结,本文讲解了创建索引、查询索引、删除索引等...

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

    参考来源 mysql索引分析 MySQL索引背后的数据结构及算法原理 MySQL中EXPLAIN命令详解 索引连接...

  • MySQL操作索引

    MySQL操作索引 增加普通索引 增加唯一索引 删除索引

  • Mysql 相关

    MySQL索引 MySQL索引背后的数据结构及算法原理 覆盖索引和回表操作 MySQL性能优化 MySql表分区详...

  • mysql 索引

    1、重建索引命令mysql> REPAIR TABLE tbl_name QUICK;2、查询数据表索引mysql...

  • Mysql索引进阶入门

    Mysql索引进阶入门 1. 索引操作 MySQL 索引 菜鸟 2. 索引类型 PRIMARY唯一且不能为空;一张...

  • mysql索引小结

    在日常工作中,我们经常会涉及到数据库的操作,而且经常性的,数据库的查询效率直接决定了我们代码的执行效率。我们以my...

  • mysql索引小结

    1.搭建mysql测试环境 模拟三百万数据入库 mysql所以简单操作:测试s1表添加主键 添加主键前后执行: 添...

  • MySQL之索引大法

    1.什么是索引? MySQL索引的建立针对于数据查询操作,索引可以大大提高MySQL的检索速度 Mysql目前几种...

  • Mysql索引的设计、使用和优化

    Mysql索引概述 所有MySQL列类型可以被索引。对相关列使用索引是提高SELECT操作性能的最佳途径。根据存储...

网友评论

      本文标题:【转】MySQL索引操作命令小结

      本文链接:https://www.haomeiwen.com/subject/bmafjxtx.html