MySQL索引操作命令小结_Mysql

创建索引

创建索引的语法是:

复制代码 代码如下:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [USING index_type]
    ON tbl_name (index_col_name,...)
 
index_col_name:
    col_name [(length)] [ASC | DESC]

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

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

复制代码 代码如下:

CREATE INDEX part_of_name ON customer (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

示例:

复制代码 代码如下:

CREATE TABLE lookup (id INT) ENGINE = MEMORY;
CREATE INDEX id_index USING BTREE ON lookup (id);

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

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

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

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

使用alter的方法创建索引

复制代码 代码如下:

alter table table_name add index index_name (column_list) ;
alter table table_name add unique (column_list) ;
alter table table_name add primary key (column_list) ;

查询索引

复制代码 代码如下:

SHOW INDEX FROM table_name;

删除索引

复制代码 代码如下:

drop index index_name on table_name ;
alter table table_name drop index index_name ;
alter table table_name drop primary key ;

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

时间: 2024-10-05 07:59:50

MySQL索引操作命令小结_Mysql的相关文章

Mysql索引详细介绍_Mysql

Mysql索引概述 所有MySQL列类型可以被索引.对相关列使用索引是提高SELECT操作性能的最佳途径.根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节.大多数存储引擎有更高的限制. 在MySQL 5.1中,对于MyISAM和InnoDB表,前缀可以达到1000字节长.请注意前缀的限制应以字节为单位进行测量,而CREATE TABLE语句中的前缀长度解释为字符数.当为使用多字节字符集的列指定前缀长度时一定要加以考虑. 还可以创建

mysql 索引详细介绍_Mysql

mysql 索引详解: 在mysql 中,索引可以分为两种类型 hash索引和 btree索引.  什么情况下可以用到B树索引?  1.全值匹配索引  比如: orderID="123"  2.匹配最左前缀索引查询  比如:在userid 和 date字段上创建联合索引. 那么如果输入 userId作为条件,那么这个userid可以使用到索引,如果直接输入 date作为条件,那么将不能使用到索引.  3.匹配列前缀查询 比如: order_sn like '134%' 这样可以使用到索

MySQL中Binary Log二进制日志文件的基本操作命令小结_Mysql

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与master同步. 1.开启binary log功能      需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可  eg: [mysqld] ...... log_bin

MySQL索引操作命令学习笔记

mysq索引类型:普通索引.唯一索引和主索引 1. 普通索引 普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度.因此,应该只为那些最经常出现在查询条件(WHERE column = -)或排序条件(ORDER BY column)中的数据列创建索引.只要有可能,就应该选择一个数据最整齐.最紧凑的数据列(如一个整数类型的数据列)来创建索引. 2. 唯一索引 普通索引允许被索引的数据列包含重复的值.比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料&quo

MySQL索引操作命令(创建索引、重建索引、查询索引、删除索引)

1.创建索引 索引的创建可以在CREATE TABLE语句中进行,也可以单独用CREATE INDEX或ALTER TABLE来给表增加索引.以下命令语句分别展示了如何创建主键索引(PRIMARY KEY),联合索引(UNIQUE)和普通索引(INDEX)的方法. mysql>ALTER TABLE `table_name` ADD INDEX `index_name` (column list); mysql>ALTER TABLE `table_name` ADD UNIQUE `inde

mysql索引学习教程_Mysql

在mysql 中,索引可以分为两种类型 hash索引和 btree索引. 什么情况下可以用到B树索引? 1.全值匹配索引 比如: orderID="123" 2.匹配最左前缀索引查询 比如:在userid 和 date字段上创建联合索引. 那么如果输入 userId作为条件,那么这个userid可以使用到索引,如果直接输入 date作为条件,那么将不能使用到索引. 3.匹配列前缀查询 比如: order_sn like '134%' 这样可以使用到索引. 4.匹配范围值查询 creat

MySQL基本操作语句小结_Mysql

1.使用SHOW语句找出在服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test | +----------+ 3 rows in set (0.00 sec) 2.创建一个数据库abccs mysql> CREATE DATABASE abccs; 注意不同操作系统对大小写的敏感.3.选择你所创建的数据库 mysql> USE abccs Database

mssql转换mysql的方法小结_Mysql

方法一: 1.导表结构 使用MySQL生成create脚本的方法.找到生成要导出的脚本,按MySQL的语法修改一下到MySQL数据库中创建该表的列结构什么的. 2.导表数据 在MSSQL端使用bcp导出文本文件: bcp "Select * FROM dbname.dbo.tablename;" queryout tablename.txt -c -Slocalhost\db2005 -Usa 其中""中是要导出的sql语句,-c指定使用\t进行字段分隔,使用\n进

mysql 索引的基础操作汇总(四)_Mysql

1.为什么使用索引:      数据库对象中的索引其实和书的目录类似,主要是为了提高从表中检索数据的速度.由于数据存储在数据库表中,所以索引是创建在数据库表对象上,由表中的一个字段或者多个字段生成的键组成,这些键存储在数据结构(B-树或者哈希表)中,通过MySQL可以快速有效查找与键相关联的字段.根据索引的存储类型,可以将索引分为B型树索引(BTREE)和哈希索引(HASH).注意:InnoDB和MyISAM存储引擎支持BTREE类型索引,MEMORY存储引擎支持HASH类型的索引,默认为前者索