MySQL数据库对象-索引
2. 索引分类
2.1 不同索引的概念
2.1.1 普通索引
2.1.2 唯一索引
2.1.3 全文索引
2.1.4 多列索引
3. 索引操作
3.1 普通索引
3.1.1 创建表时创建普通索引
3.1.2 在已经存在的表上创建普通索引
3.1.3 通过SQL语句alter table创建普通索引
3.2 唯一索引
3.2.1 创建表时创建唯一索引
3.2.2 在已经存在的表上创建唯一索引
3.2.3 通过SQL语句alter table创建唯一索引
3.3 全文索引
3.3.1 创建表时创建全文索引
3.3.2 在已经存在的表上创建全文索引
3.4.3 通过SQL语句alter table创建全文索引
3.4 多列索引
3.4.1 创建表时创建多列索引
3.4.2 在已经存在的表上创建多列索引
3.4.3 通过SQL语句alter table创建多列索引
1. 概述
在MySQL数据库中,数据库对象表是存储和操作数据的逻辑结构。
数据库对象索引,则是一种有效组合数据的方式。通过索引对象,可以快速查到数据对象表中的记录,是提供性能的常用方式。
数据库对象索引的出现,不仅可以提高数据库管理系统的查找速度,而且还可以保证字段的唯一性,从而实现数据库表的完整性。
根据索引类型,可以将索引分为B型树索引(BTREE)和哈希索引(HASH)。
InnoDB和MyISAM存储引擎支持btree索引类型,memory存储引擎支持hash索引。默认为前者索引。
一个索引会包含表中按照一定顺序排序的一列或者多列字段。索引的基本操作包括:创建,修改,删除。
2. 索引分类
索引有6种,分别是:普通索引,唯一索引,全文索引,单列索引,多列索引,空间索引。
索引的创建,有利有弊。创建索引可以提供查询速度,但是过多的索引会占据许多磁盘空间。
以下情况适合创建索引:
- 经常被查询的字段,即在where子句种出现的字段
- 在分组的字段,即在group by 子句种出现的字段
- 存在依赖关系的子表和父表之间的联合查询,即主键或者外键字段
- 设置唯一完整性的约束字段
以下情况不适合创建索引:
- 在查询中很少被使用的字段
- 用户许多重复的字段
2.1 不同索引的概念
2.1.1 普通索引
普通索引,就是在创建索引时,不添加任何限制条件(唯一,非空等限制)。该类型的索引可以创建在任何数据类型的字段上。
2.1.2 唯一索引
唯一索引,就是创建索引时,限制索引的值必须是唯一的。通过该类型的索引,可以更快第查询某条记录。
根据创建索引的方式,可以分为自动索引和手动索引。
自动索引
指的是在数据库表里设置完整性约束时,该表被系统自动创建索引。
手动索引
指的是手动在表上创建索引。
当设置表中的某个字段设置主键或者唯一完整性约束时,系统就会自动创建关联该字段的唯一索引。
2.1.3 全文索引
全文索引,主要关联在数据类型为char,varchar,text的字段,以便能够更加快速地查询数据量较大的字符串类型的字段。
2.1.4 多列索引
多列索引,指的是创建索引时,所关联的字段不是一个字段,而是多个字段。
虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联的字段中的第一个字段,多列索引才会被使用。
3. 索引操作
3.1 普通索引
3.1.1 创建表时创建普通索引
create table kvmhost ( hostid int(10), hostname char(10), hostmac char(20), hostip char(20), index hostid_index(hostid));
结果如下图:

3.1.2 在已经存在的表上创建普通索引
3.1.3 通过SQL语句alter table创建普通索引
3.2 唯一索引
3.2.1 创建表时创建唯一索引
3.2.2 在已经存在的表上创建唯一索引
3.2.3 通过SQL语句alter table创建唯一索引
3.3 全文索引
3.3.1 创建表时创建全文索引
3.3.2 在已经存在的表上创建全文索引
3.4.3 通过SQL语句alter table创建全文索引
3.4 多列索引
3.4.1 创建表时创建多列索引
3.4.2 在已经存在的表上创建多列索引
3.4.3 通过SQL语句alter table创建多列索引
MySQL数据库对象-索引的更多相关文章
- 千万级MySQL数据库建立索引,提高性能的秘诀
实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化.数据表结构的优化.系统配置的优化和硬件的优化四个方面,如下图所示: SQL语句及索引的优化 SQL语句的优化 SQL语 ...
- MySQL数据库之索引
1 引言 在没有索引的情况下,如果要寻找特定行,数据库可能要遍历整个数据库,使用索引后,数据库可以根据索引找出这一行,极大提高查询效率.本文是对MySQL数据库中索引使用的总结. 2 索引简介 索引是 ...
- MySQL数据库之索引、事务、存储引擎详细讲解
一.索引 1.1 索引的概念 索引是一个排序的列表,存储着索引值和这个值所对应的物理地址 无须对整个表进行扫描,通过物理地址就可以找到所需数据 (数据库索引类似书中的目录,通过目录就可以快速査找所需信 ...
- Mysql数据库的索引原理
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...
- oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
数据库对象 用户模式:指数据库用户所创建和存储数据对象的统称.在访问其它用户模式的数据库对象时需加上用户模式. 如:scott.emp, scott.dept等. 数据库对象包括:表.视图.索引.序列 ...
- MySQL数据库_索引_事务_优化 _锁_存储引擎_存储过程_CAP
##一.基础 ## * 插入 INSERT INTO table_name ( field1, field2,...fieldN ) ...
- oracle学习笔记(十四) 数据库对象 索引 视图 序列 同义词
数据库对象 用户模式:指数据库用户所创建和存储数据对象的统称.在访问其它用户模式的数据库对象时需加上用户模式. 如:scott.emp, scott.dept等. 数据库对象包括:表.视图.索引.序列 ...
- MySQL数据库中索引的数据结构是什么?(B树和B+树的区别)
B树(又叫平衡多路查找树) 注意B-树就是B树,-只是一个符号. B树的性质(一颗M阶B树的特性如下) 1.定义任意非叶子结点最多只有M个儿子,且M>2: 2.根结点的儿子数为[2, M]: 3 ...
- MYSQL数据库查询索引
1.查看数据库所有索引 SELECT * FROM mysql.`innodb_index_stats` a WHERE a.`database_name` = '数据库名'; 2.查看某一表索引 S ...
随机推荐
- C# 异步编程3 TPL Task 异步程序开发
.Net在Framework4.0中增加了任务并行库,对开发人员来说利用多核多线程CPU环境变得更加简单,TPL正符合我们本系列的技术需求.因TPL涉及内容较多,且本系列文章为异步程序开发,所以本文并 ...
- json数据 二级联动
<head> <link href="static/bootstrap-3.3.5-dist/css/bootstrap.css" rel="style ...
- Mysql基础之 事务
MySql事务 Mysql事务主要处理操作量大,复杂度高的数据. Mysql事务需要注意的三点: 1.在mysql中只有使用innodb数据库引擎的数据库或表才支持事务 2.事务处理可以用来维护数据库 ...
- 串口-CreateFile的使用
在32位的windows系统中,串口和其他通信设备是作为文件处理的.对串口的操作和对文件的操作是完全一样的.通信以调用CreateFile()开始. 函数原型如下: HANDLE CreateFile ...
- MVC设计模式在网站中的应用
MVC设计模式在网站中的应用 以淘宝的购物车为例 一.结合六个基本质量属性 可修改性 采用MVC设计模式的时候,可以将视图.模型.控制器分析,将用户动作.数据表示.应用数据分离开来,如果用户需要以不同 ...
- Python进阶(三)
匿名函数 匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果.用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突.此外,匿名函数也是一个函数对象,也可以把匿名函 ...
- Django 通过 session 保存个人信息
通过 session 保存 个人 信息 登录的视图函数中: def login(request): ''' 登录 ''' err, user, pwd = '', '', '' if request. ...
- 理解 boxsizing
理解boxsizing 什么是css盒模型?css盒模型包括如下属性:内容(content),填充(padding),边框(border),边界(margin). 这些东西我们可以拿日常生活中的列子来 ...
- POJ2387(dijkstra堆优化)
Til the Cows Come Home Bessie is out in the field and wants to get back to the barn to get as much s ...
- Unable to execute dex: Multiple dex files defineLcom/google/gson/JsonDeserializer;
这是异常想必大家都知道的,是关于一个android jar包冲突的问题.为什么还要提呢,是因为这玩意真心让人蛋疼.有些时候稍微不注意(手贱)多导入一个包,就完蛋了.(jar包多的话搞不好带一上午调试) ...