1. 索引的含义和特点

索引:创建在表上,是对数据库表中一列或多列的值进行排序的一种结构。

存储类型: B性树(BTREE)索引和哈希(HASH)索引; InnoDB和MyISAM支持BTREE索引, MEMORY支持BTREE索引和HASH索引

优缺点:  优点——提高检索数据的速度; 缺点: 创建和维护索引需要耗费时间

2. 索引分类

1)普通索引:不加任何限制条件

2)唯一性索引:使用UNIQUE参数(主键就是一种特殊唯一性索引)

3)全文索引: 使用FULLTEXT参数,只能创建在CHAR VARCHER或TEXT类型的字段上

4)单列索引: 在表中的单个字段上创建索引,唯一性索引或全文索引

5)多列索引: 在表的多个字段上创建一个索引;唯一性索引或全文索引

6)空间索引:使用SPATIAL参数,只有MyISAM存储引擎支持空间索引,必须建立在空间数据类型上,切必须非空

3. 如何设计索引

4. 创建索引

三种方式:创建表时创建索引, 在已经存在的表上创建索引,使用ALTER TABLE语句创建

4.1 创建表的时候创建索引

1)创建普通索引

在表的id字段建立索引
CREATE TABLE index1(id INT,
name VARCHAR(20),
sex BOOLEAN,
INDEX(id)
);

2)创建唯一性索引

CREATE TABLE index2(id INT UNIQUE,
name VARCHAR(20),
UNIQUE INDEX index2_id(id ASC)
);

3)创建全文索引

CREATE TABLE index3(id INT,
info VARCHAR(20),
FULLTEXT INDEX index3_info(info)
)ENGINE=MyISAM;

4)创建单列索引

CREATE TABLE index4(id INT,
subject VARCHAR(20),
INDEX index4_st(subject(10))
);

5)创建多列索引

CREATE TABLE index5(id INT ,
name VARCHAR(20),
sex CHAR(4),
INDEX index5_ns(name, sex)
);

6)创建空间索引

CREATE TABLE index6(id INT ,
space GEOMETRY NOT NULL,
SPATIAL INDEX index6_sp(space)
)ENGINE=MyISAM;

4.2 在已经存在的表上创建索引

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

1)创建普通索引

在examp0表的id字段建立名为index7_id的索引

CREATE INDEX index7_id ON example0(id)

2)创建唯一性索引

在index8表中的course_id字段建立名为index8_id的唯一性索引

CREATE UNIQUE INDEX index8_id ON index8(course_id);

3)创建全文索引

在index9表中的info字段建立名为index9_info的全文索引
CREATE FULLTEXT INDEX index9_info ON index9(info);

4)创建单列索引

在index10表中的address字段上建立名为index10_addr的单列索引
CREATE INDEX index10_addr ON index10(address(4));

5)创建多列索引

在index11表中的name和address字段上建立名为index11_na的多列索引

CREATE INDEX index11_na ON index11(name,address);

6)创建空间索引

在index12表中的line字段上建立名为index12_line的多列索引

CREATE SPATIAL INDEX index12_line ON index12(line);

4.3 用ALTER TABLE语句创建索引

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

1)创建普通索引

在example0表中的name字段建立名为index13_name的索引

ALTER TABLE example0 ADD INDEX index13_name(name(20));

2)创建唯一性索引

ALTER TABLE index14 ADD UNIQUE INDEX index14_id(course_id);

3)创建全文索引

ALTER TABLE index15 ADD FULLTEXT INDEX index15_info(info);

4)创建单列索引

ALTER TABLE index16 ADD INDEX index16_addr(address(4));

5)创建多列索引

ALTER TABLE index17 ADD INDEX index17_na(name, address);

6)创建空间索引

ALTER TABLE index18 ADD SPATIAL INDEX index18_line(line);

5. 删除索引

DROP INDEX 索引名 ON 表名;

MySQL入门很简单: 5 索引的更多相关文章

  1. 《Mysql 入门很简单》(读后感①)

    下载完整版<Mysql 入门很简单>,点击这里~: http://files.cnblogs.com/files/zhengyeye/MySQL%E5%85%A5%E9%97%A8%E5% ...

  2. MySQL入门很简单: 1 数据库概述

    1. 数据库概述 1.1 数据存储方式: 1)人工管理阶段 2)文件系统阶段: 文件系统通过文件的存储路径和文件名称访问文件中的数据 3)数据库系统阶段:Oracle, SQL Server, MyS ...

  3. MySQL入门很简单-触发器

    1.触发器是由事件来触发某个操作,这些事件包括insert语句.update语句和delete语句.当数据库系统执行这些事件时,会激活触发器执行相应操作.MySQL从5.0.2开始支持触发器.使用触发 ...

  4. MySQL入门很简单: 15 java访问MySQL数据库

    1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...

  5. MySQL入门很简单: 14MySQL日志

    二进制日志: 以二进制文件的形式记录了数据库中的操作,但不记录查询语句 错误日志: 记录MySQL服务器的启动,关闭和运行错误等信息 通用查询日志: 记录用户登录和记录查询的信息 慢查询日志: 记录执 ...

  6. MySQL入门很简单: 13 数据备份和还原

    1. 数据备份 1)使用mysqldump命令备份 第一种:备份一个数据库 mysqldump -u username -p dbname table1 table2 ... > BackupN ...

  7. MySQL入门很简单: 12 MYSQL 用户管理

    1. 权限表 安装MySQL会自动安装一个名为mysql的数据库,存储权限表: user表, db表,host表,table_priv表,columns_priv表,proc_priv表等. 1)us ...

  8. MySQL入门很简单: 8查询数据

    1. 查询语句语法 SELECT 属性列表 FROM 表名和视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING t条件表达式2]] [ORDER BY 属性名2 [A ...

  9. MySQL入门很简单: 6 视图

    1. 视图含义作用 视图是虚拟的表,是从数据率中一个或多个表中导出来的表:  数据库中只存放了视图的定义,没有存放视图中的数据,数据在原先的表中:  一旦表中的数据发生变化,显示在视图中的数据也会发生 ...

随机推荐

  1. Windows任务计划创建计划,定时执行PowerShell命令

    [环境介绍] 操作系统:Windows Server 2012 R2,64位操作系统 PowerShell版本:PowerShell 1.0 脚本位置:C:\BackUp.ps1 启动目录:C:\Wi ...

  2. POJ2886Who Gets the Most Candies?(线段树之约瑟夫)

    约瑟夫问题的升级版,每次出去的是前一个出去的人位置+手上的数字(正往前,负往后).第i个出去的人拿的糖是i的约数的个数.求拿糖最多的人和他的糖果数. 这里用到了反素数的知识,在这直接打表 题目 AC代 ...

  3. Install ElasticSearch plugin for head

    git clone git://github.com/mobz/elasticsearch-head.git yum install git npm cd elasticsearch-head npm ...

  4. java——重载解析、静态绑定、动态绑定

    重载解析: a被声明为A类型的对象,调用method()方法时,如果有多个同名方法,参数不同,编译器将列举所用类A的method()方法和所用父类中public类型的method()方法,编译器查看这 ...

  5. Turn.js 实现翻书效果

    Turn.js的官方网址: http://www.turnjs.com/ 官网上运行demo如下,大家主要关注是 属性使用: <!DOCTYPE html> <html> &l ...

  6. SQL---MySQL数据库---聚合函数

    1.数值 format(x,n) 将x格式化为  由逗号分隔,小数点后n 位的数:

  7. CSAPP阅读笔记-链接-第七章-P464-P500

    链接概述 经预处理器->编译器->汇编器处理后,源文件可被转化为一组可重定位目标文件,链接器将它们组合起来形成可执行文件. 每个可重定位目标文件由不同的“代码节”和“数据节”组成,每一个节 ...

  8. [转]如何在.NET MVC中使用jQuery并返回JSON数据

    本文转自:http://blog.sina.com.cn/s/blog_48e42dc90100xp1p.html 二.开始实践 - jQuery端 假设我们要从服务器端获取一个文章列表,并把文章条目 ...

  9. 深入学习webpack(四)

    更多内容可以看此文档.

  10. jemeter排至数据库时报:Access denied for user 'root'@'localhost' (using password:YES) 解决方案

    相信这个问题大部分人都遇到过,至少我遇到过三次了,而且每次原因都不一样,前段时间同学也遇到这个问题,问我怎么解决,我把我的解决思路都说了一遍,发现还不行,最后居然是另外一个原因...哎,说多了都是泪, ...