MySQL入门很简单: 5 索引
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 索引的更多相关文章
- 《Mysql 入门很简单》(读后感①)
下载完整版<Mysql 入门很简单>,点击这里~: http://files.cnblogs.com/files/zhengyeye/MySQL%E5%85%A5%E9%97%A8%E5% ...
- MySQL入门很简单: 1 数据库概述
1. 数据库概述 1.1 数据存储方式: 1)人工管理阶段 2)文件系统阶段: 文件系统通过文件的存储路径和文件名称访问文件中的数据 3)数据库系统阶段:Oracle, SQL Server, MyS ...
- MySQL入门很简单-触发器
1.触发器是由事件来触发某个操作,这些事件包括insert语句.update语句和delete语句.当数据库系统执行这些事件时,会激活触发器执行相应操作.MySQL从5.0.2开始支持触发器.使用触发 ...
- MySQL入门很简单: 15 java访问MySQL数据库
1. 连接数据库 1.1 下载安装驱动 java通过JDBC(Java Database Connectivity,Java数据库连接)来访问MySQL数据库.JDBC的编程接口提供的接口和类与MyS ...
- MySQL入门很简单: 14MySQL日志
二进制日志: 以二进制文件的形式记录了数据库中的操作,但不记录查询语句 错误日志: 记录MySQL服务器的启动,关闭和运行错误等信息 通用查询日志: 记录用户登录和记录查询的信息 慢查询日志: 记录执 ...
- MySQL入门很简单: 13 数据备份和还原
1. 数据备份 1)使用mysqldump命令备份 第一种:备份一个数据库 mysqldump -u username -p dbname table1 table2 ... > BackupN ...
- MySQL入门很简单: 12 MYSQL 用户管理
1. 权限表 安装MySQL会自动安装一个名为mysql的数据库,存储权限表: user表, db表,host表,table_priv表,columns_priv表,proc_priv表等. 1)us ...
- MySQL入门很简单: 8查询数据
1. 查询语句语法 SELECT 属性列表 FROM 表名和视图列表 [WHERE 条件表达式1] [GROUP BY 属性名1 [HAVING t条件表达式2]] [ORDER BY 属性名2 [A ...
- MySQL入门很简单: 6 视图
1. 视图含义作用 视图是虚拟的表,是从数据率中一个或多个表中导出来的表: 数据库中只存放了视图的定义,没有存放视图中的数据,数据在原先的表中: 一旦表中的数据发生变化,显示在视图中的数据也会发生 ...
随机推荐
- Gym - 101572G Galactic Collegiate Programming Contest 小根堆(set)
题目传送门 题目大意: n个人,m次提交,每次提交都代表某支队伍做出一题,并且给出罚时,让你输出每次提交后,编号为1的队伍的排名. 思路: 首先处理ac和罚时,由于罚时最大1000,最多有1e5次,要 ...
- HDU3555 区间的数里面有49的个数(数位dp)
题目:区间的数里面有49的个数 分析: dp[pos][0]:长度为pos的数中,不包含49的,前一位不为4的有多少个:dp[pos][1]:长度为pos的数中,不包含49的,前一位为4的有多少个:d ...
- CF .Beautiful numbers 区间有多少个数字是可以被它的每一位非零位整除。(数位DP)
题意:数字满足的条件是该数字可以被它的每一位非零位整除. 分析:大概的思路我是可以想到的 , 但没有想到原来可以这样极限的化简 , 在数位dp 的道路上还很长呀 : 我们都知道数位dp 的套路 , 核 ...
- 小白零基础C#学习笔记
一.概述 1..Net 1)..Net平台 2)..Net Frameword框架 说明:是.Net平台中不可缺少的一部分,提供了一个稳定的运行环境来保证.Net平台开发的各种应用能够正常运转. 2. ...
- 第一章javascript简介
javascript 当诞生于1995 最开始是目的是处理在服务器端进行的表单验证:让其在服务器端验证改为在服务端验证,大大提高速度(当时网络慢) 如今javascript是一门功能全面的语言,包含闭 ...
- sklearn——回归评估指标
sklearn中文文档:http://sklearn.apachecn.org/#/ https://www.cnblogs.com/nolonely/p/7009001.html https://w ...
- vue router路由(三)
当环境搭建及Vue语法与指令都有所了解,该说下router. build目录是打包配置文件 (不建议动) config是vue项目基本配置文件 dist是构建后文件 js 手动创建 (根据需要) no ...
- Dotfuscator 的使用方法
打开Dotfuscator工具,选择“Create New Project” 在Input选项中选择需要混淆的文件 把 Disable String Encryption 设为 NO,即启用字符串加密 ...
- 以多进程读取oss符合条件的数据为例,综合使用多进程间的通信、获取多进程的数据
import datetime import sys import oss2 from itertools import islice import pandas as pd import re im ...
- BaseAdapter,SimpleAdapter,CursorAdapter的用法
简单好用的Adapter---ArrayAdapter ArrayAdapter是BaseAdapter的派生类,在BaseAdapter的基础上,添加了一项重大的功能:可以直接使用泛型构造. 我们先 ...