mysql索引创建实例

MySQL 索引
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。

拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。

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

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

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

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

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

总体分析

PRIMARY, INDEX, UNIQUE3种是一类

PRIMARY 主键。 就是 唯一 且 不能为空。

INDEX 索引,普通的

UNIQUE 唯一索引。 不允许有重复。

普通索引
创建索引
这是最基本的索引,它没有任何限制。它有以下几种创建方式

创建表sql
CREATE TABLE t(
   c1 INT PRIMARY KEY,
   c2 INT NOT NULL,
   c3 INT NOT NULL,
   c4 VARCHAR(10),
   INDEX (c2,c3) 
);

但是要为列或一组列添加索引,可以使用CREATE INDEX语句,如下所示:

CREATE INDEX index_name ON table_name (column_list)

实例

CREATE INDEX idx_c4 ON t(c4);

查看索引

SHOW INDEXES FROM t;

唯一索引:
这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一
1:添加UNIQUE(唯一索引)

ALTER TABLE t ADD UNIQUE (c3) 

2:添加PRIMARY KEY(主键索引)
MYSQL主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。

在创建表的时候,指定主键索引

create table table_primarykey
(   id int primary key auto_increment  ,
    name varchar(20)
);
l另外一中方式:
create table table_primarykey
(   id int,
    name varchar(20)
);

alter table table_primarykey add primary key (id);

3:添加FULLTEXT(全文索引)
MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在CHAR、VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。

语句介绍:WHERE MATCH(COLUMN_NAME) AGAINST('KEY_WORD1,KEY_WORD2' IN BOOLEAN MODE)
索引名称:FULLTEXT
支持类型:charvarchartext
以下依次是增、删、查全文索引示例:
alter table xxf_witkey_article ADD FULLTEXT username(art_title);
 
DROP INDEX username ON xxf_witkey_article;
 
SELECT * FROM `xxf_witkey_article` WHERE MATCH(art_title) AGAINST('kkkk');

4:添加多列索引

ALTER TABLE t ADD INDEX index_name ( c2,c3,c4 )

下面是更加详细的方法

MySQL中可以使用alter table这个SQL语句来为表中的字段添加索引。

使用alter table语句来为表中的字段添加索引的基本语法是:
ALTER TABLE <表名> ADD INDEX (<字段>);

我们来尝试为test中t_name字段添加一个索引。

mysql> alter table test add index(t_name);
Query OK, 0 rows affected (0.17 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql索引创建实例_第1张图片

删除索引:
删除索引可以使用ALTER TABLE或DROP INDEX语句来实现;

drop index index_name(数据库名称) on table_name (表名);
alter table t drop index c2;
alter table t drop primary key ;

查看所有索引:

SHOW INDEXES FROM t;

你可能感兴趣的:(mysql,mysql,sql)