MySQL入门很简单-学习笔记 - 第7章 索引

第7章 索引

MySQL中,所有的数据类型都可以被索引,包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等。

7.1、索引简介

7.1.1、索引的含义和特点

BTREE索引,HASH索引

优点:提高查询,联合查询,分级和排序的时间

缺点:索引占空间,维护(创建,更新,维护)索引时需要耗费时间

 

7.1.2、索引的分类

1、普通索引

         不加任何限制条件

2、唯一性索引

         使用UNIQUE参数

3、全文索引

         使用FULLTEXT参数,只能创建在CHAR,VARCHAR,TEXT类型的字段上,只有MyISAM存储引擎支持全文索引。

4、单列索引

         在一个字段上建立的普通索引,唯一性索引或全文索引

5、多列索引

         在多个字段上建立的普通索引,唯一性索引或全文索引

6、空间索引

         使用SPATIAL参数,只有MyISAM存储引擎支持空间索引,必须建立在空间数据类型上,且必须非空,初学者很少用到。

 

7.1.3、索引的设计原则

1、选择唯一性索引

2、为经常需要排序、分组和联合操作的字段建立索引

         如ORDER BY、GROUP BY、DISTINCT,UNION等操作的字段,特别是排序

3、为常作为查询条件的字段建立索引

4、限制索引的数目

         避免过多地浪费空间

5、尽量使用数据量少的索引

6、尽量使用前缀来索引

         如指索引TEXT类型字段的前N个字符

7、删除不再使用或者很少使用的索引

 

7.2、创建索引

三种方式:

1、  创建表时创建索引

2、  已经存在的表上创建索引

3、  使用ALTER TABLE语句来创建索引

 

7.2.1、创建表的时候创建索引

CREATE TABLE 表名 (属性名 数据类型 [完整约束条件],

                    属性名数据类型 [完整约束条件],

                    …

                    [UNIQUE|FULLTEXT|SPATIALINDEX|KEY [别名] (属性名1  [(长度)] [ASC|DESC])

                    );

 

1、创建普通索引

CREATE TABLEindex1 (id INT,

                      name VARCHAR(20),

                      sex BOOLEAN,

                      INDEX(id)

                      );

SHOW CREATETABLE index1\G;

 

2、创建唯一性索引

CREATE TABLEindex2(id INT UNIQUE,

                     name VARCHAR(20),

                     UNIQUE INDEX index2_id(id ASC)

                     );

SHOW CREATETABLE index2\G;

看到在字段id上建立了两个唯一索引id和index2_id,当然这样是没有必要的。

 

3、创建全文索引

CREATE TABLEindex3 (id INT,

                      info VARCHAR(20),

                      FULLTEXT INDEX index3_info(info)

                      ) ENGINE=MyISAM;

 

4、创建单列索引

CREATE TABLEindex4 (id INT,

                      subject VARCHAR(30),

                       INDEXindex4_st(subject(10))

                      );

注意:只索引subject前10个字符

 

5、创建多列索引

CREATE TABLEindex5 (id INT,

                      name VARCHAR(20),

                      sex CHAR(4),

                      INDEX index5_ns(name,sex)

                      );

 

EXPLAIN select *from index5 where name=’123’\G;

EXPLAIN select *from index5 where name=’123’and sex=’N’\G;

6、创建空间索引

CREATE TABLEindex6 (id INT,

                      Space GEOMETRY NOT NULL,

                      SPATIAL INDEX index6_sp(space)

                      )ENGINE=MyISAM;

 

7.2.2、在已经存在的表上创建索引

CREATE [UNIQUE|FULLTEXT|SPATIAL]INDEX 索引名 ON 表名 (属性名[(长度)] [ASC|DESC]);

 

1、创建普通索引

CREATE INDEXindex7_id on example0(id);

 

2、创建唯一性索引

CREATE UNIQUEINDEX index_8_id ON index8(course_id);

 

3、创建全文索引

CREATE FULLTEXTINDEX index9_info ON index9(info);

 

4、创建单列索引

CREATE INDEXindex10_addr ON index10(address(4));

 

5、创建多列索引

CREATE INDEXindex11_na ON index11(name, address);

 

6、创建空间索引

CREATE SPATIALINDEX index12_line on index12(line);

 

7.2.3、用ALTER TABLE语句来创建索引

ALTER TABLE 表名 ADD  [UNIQUE|FULLTEXT|SPATIAL] INDEX 索引名 (属性名[(长度)][ASC|DESC]);

 

1、创建普通索引

ALTER TABLEexample0 ADD INDEX index12_name(name(20));

 

2、创建唯一性索引

ALTER TABLEindex14 ADD UNIQUE INDEX index14_id(course_id);

 

3、创建全文索引

ALTER TABLEindex15 ADD INDEX index15_info(info);

 

4、创建单列索引

ALTER TABLEindex 16 ADD INDEX index16_addr(address(4));

 

5、创建多列索引

ALTER TABLEindex17 ADD INDEX index17_na(name, address);

 

6、创建空间索引

ALTER TABLEindex18 ADD INDEX index18_line(line);

 

 

7.3、删除索引

DROP INDEX 索引名 ON 表名;

 

DROP INDEX id ONindex1;




Google Project 完整PDF下载


MySQL入门很简单-学习笔记 - 索引页

MySQL入门很简单-学习笔记 - 第1 章 数据库概述

MySQL入门很简单-学习笔记 - 第 2 章 Windows平台下安装与配置MySQL

MySQL入门很简单-学习笔记 - 第 4 章 MySQL数据类型

MySQL入门很简单-学习笔记 - 第 5 章 操作数据库

MySQL入门很简单-学习笔记 - 第6章 创建、修改和删除表

MySQL入门很简单-学习笔记 - 第7章 索引

MySQL入门很简单-学习笔记 - 第 8 章 视图

MySQL入门很简单-学习笔记 - 第 9 章 触发器

MySQL入门很简单-学习笔记 - 第10章 查询数据

MySQL入门很简单-学习笔记 - 第11章 插入、更新与删除数据

MySQL入门很简单-学习笔记 - 第13章 MySQL函数

MySQL入门很简单-学习笔记 - 第14章 存储过程和函数

MySQL入门很简单-学习笔记 - 第15章 MySQL用户管理

MySQL入门很简单-学习笔记 - 第16章 数据备份与还原

MySQL入门很简单-学习笔记 - 第17章 MySQL日志

MySQL入门很简单-学习笔记 - 第18章 性能优化


Google Project 完整PDF下载


Google Project 完整PDF下载


MySQL入门很简单-学习笔记 - 索引页

MySQL入门很简单-学习笔记 - 第1 章 数据库概述

MySQL入门很简单-学习笔记 - 第 2 章 Windows平台下安装与配置MySQL

MySQL入门很简单-学习笔记 - 第 4 章 MySQL数据类型

MySQL入门很简单-学习笔记 - 第 5 章 操作数据库

MySQL入门很简单-学习笔记 - 第6章 创建、修改和删除表

MySQL入门很简单-学习笔记 - 第7章 索引

MySQL入门很简单-学习笔记 - 第 8 章 视图

MySQL入门很简单-学习笔记 - 第 9 章 触发器

MySQL入门很简单-学习笔记 - 第10章 查询数据

MySQL入门很简单-学习笔记 - 第11章 插入、更新与删除数据

MySQL入门很简单-学习笔记 - 第13章 MySQL函数

MySQL入门很简单-学习笔记 - 第14章 存储过程和函数

MySQL入门很简单-学习笔记 - 第15章 MySQL用户管理

MySQL入门很简单-学习笔记 - 第16章 数据备份与还原

MySQL入门很简单-学习笔记 - 第17章 MySQL日志

MySQL入门很简单-学习笔记 - 第18章 性能优化


Google Project 完整PDF下载

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值