索引
在explain返回的结果中,有三个是和索引有关的(possible key、key、extra),可见索引在改善查询效率上的显著地位。
这一章,我们将全方位讲解如何使用索引来优化我们的数据库。
1. 索引的作用
索引的原理是利用特殊的查找算法(如二叉树算法),限制访问的行数,提高访问效率。
另外,索引还可以高效地在表之间建立连接操作,高效的对结果进行排序等等
2. 基本索引种类及创建
索引可以分为主键索引、普通索引、唯一索引和全文索引。
1) 主键索引
当一张表,把某个列设为主键的时候,则该列就是主键索引
- create table aaa
- (id int unsigned primary key auto_increment ,
- name varchar(32) not null defaul ‘’);
这是id 列就是主键索引.
如果你创建表时,没有指定主键索引,也可以在创建表后再添加
- alter table 表名 add primary key (列名);
2) 普通索引
一般来说,普通索引的创建,是先创建表,然后在创建普通索引
- create index 索引名 on 表 (列名1,列名2);
当括号中的列不止一个时,我们称之为多列索引,多列索引在一定情况下可以进化为覆盖索引(后面会介绍)。
这里我们通过在emp表中创建普通索引来见识一下索引的威力。
在未创建索引前
我们执行以下语句
- select count(1) from emp where ename like 'yu%';
接着我们创建索引
- create index index_ename on emp(ename);
再次执行
- select count(1) from emp where ename like 'yu%';
不可思议!
索引的威力可见一斑!
当然索引是有开销的
这是我在未创建索引时mysql安装目录下data/bigtable/emp.ibd文件的大小,对于innodb引擎的表来说,ibd文件存放了表的数据和索引。
在我创建了索引之后
显然,索引会占用主机的空间,这也称作索引的开销。
3) 唯一索引
当表的某列被指定为unique约束时,这列就是一个唯一索引
- create table ddd(id int primary key auto_increment , name varchar(32) unique);
这时, name 列就是一个唯一索引
在创建表后,再去创建唯一索引
- create unique index 索引名 on 表名 (列表..);
unique字段可以为NULL,并可以有多NULL,即Null!=Null。但是如果是具体内容,则不能重复
4) 全文索引
全文索引,只对MyISAM引擎有用。主要是针对对文件,文本的检索, 比如文章或者段落,.
它会把某个数据表的某个数据列出现过的所有单词生成一份清单
全文索引的创建
在创建表时创建
- CREATE TABLE articles (
- id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
- title VARCHAR(200),
- body TEXT,
- FULLTEXT (title,body)
- )engine=myisam charset utf8;
相关推荐
这份"mysql学习资料大全"包含了一系列的资源,对于想要学习或深入理解MySQL的人来说,是一份非常宝贵的资料集。 首先,从标题我们可以推断,这份资料可能涵盖了MySQL的基础到进阶内容,包括安装配置、SQL语言基础、...
【MySQL学习2】介绍了MySQL的安装与卸载,这是开始学习前必不可少的步骤。【MySQL学习3】提到了图形管理工具,如MySQL Workbench,它们提供友好的用户界面,简化了数据库的管理。 接着,【MySQL学习4】和【MySQL...
这份压缩包包含的三本书籍是MySQL学习的重要资源,涵盖了从基础到高级的全方位知识。 《MySQL必知必会》这本书是MySQL入门的经典之作,适合对数据库没有基础知识的读者。它详细介绍了MySQL的基本操作,包括如何创建...
本“Mysql学习资料大全”包含了一系列关于MySQL的教程和参考资料,旨在帮助初学者和经验丰富的开发者深入理解和熟练掌握MySQL的各项功能。 首先,从简介及连接部分开始,这部分内容会涵盖MySQL的基本概念,如数据库...
个人推荐mysql学习资料, 很不错,好东西不但要珍藏,还要分享
MySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL学习源码(MySQL入门教程).zipMySQL...
本资源“数据库mysql学习脑图”旨在为MySQL初学者提供一个清晰的学习路径,帮助理解其核心概念和功能。 首先,脑图将可能涵盖数据库基础,包括数据库的概念、数据模型(如层次模型、网状模型、关系模型)以及SQL...
机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习数据库+MySQL学习毕业设计机房精空调分类2023+MySQL学习练习...
这份“mysql学习资料(9本)”的压缩包包含了丰富的学习资源,适合不同层次的学习者,从初学者到经验丰富的开发者都能从中受益。 1. **MYSQL 5.5从零开始学.pdf**:这本书可能是一本入门教程,从MySQL 5.5版本的基础...
官方MySQL5.6学习手册是关于MySQL版本5.6的一份详细参考指南,其中还包含了基于NDB Cluster 7.3及7.4版本的参考指南。这份手册的文档范围覆盖了从MySQL 5.6到5.6.44版本,以及NDB Cluster 7.3版本的5.6.43-ndb-7.3....
本文将深入探讨MySQL的学习和安全配置。 首先,对于初学者来说,掌握MySQL的基础操作至关重要。例如,通过命令行工具启动和停止MySQL服务,如`mysqld-shareware --install`来安装服务,然后使用`net start mysql`...
这个“mySQL学习资料.rar”压缩包很可能包含了一系列关于MySQL的学习材料,如教程、手册、示例脚本和使用指南,旨在帮助初学者和进阶者深入理解和掌握MySQL。 首先,让我们来探讨一下MySQL的基础知识。MySQL的核心...
在这个“mysql学习用数据库dbt3”压缩包中,包含了一个名为“dbt3_s1.sql”的文件,这通常是用来初始化或恢复数据库的SQL脚本。 在学习MySQL的过程中,理解数据库的设计和管理至关重要。DBT3提供了一种实践环境,让...
MySQL学习手册中文版是一本全面介绍MySQL数据库管理系统的基础知识的指南,适合初学者及有一定经验的用户进行深入学习。MySQL是一种广泛使用的开源关系型数据库,它以其高效、稳定和易于管理的特点,在各种规模的...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在Web应用...学习MySQL不仅涉及理论知识,还需要大量的实践操作来熟悉其语法和功能。掌握MySQL能让你在数据管理、Web开发和系统集成等领域具备更强的竞争力。
2. 数据类型:理解MySQL中的数据类型,如INT、VARCHAR、DATE、BOOLEAN等,以及它们在不同场景下的适用性。 3. 表结构设计:学习如何创建和设计高效的表结构,包括主键、外键、索引的使用,以及如何进行规范化设计以...
《MySQL学习手册》主要针对Windows平台,深入浅出地介绍了如何管理和使用MySQL数据库系统。以下是对MySQL的安装、Workbench的使用以及基本的数据库操作的详细说明。 1. MySQL的下载与安装: 要安装MySQL,首先访问...
MySQL Proxy应用入门 2 MySQL Proxy配置选项 MySQL Proxy应用入门 3 使用MySQL Proxy MySQL UDF Mysql Proxy安装配置测 MySQL5 5 Semi synchronous Replication(半同步复制) mysqlslap MySQL压力测试工具 mysql ...
MySQL最全学习线路图 超级详细版
这份学习资料主要涵盖了MySQL的基础操作,包括数据库的管理、表的操作以及数据的增删改查。 首先,我们讨论一下如何启动和停止MySQL服务。在Windows操作系统中,你可以通过命令行工具执行以下命令来启动和停止MySQL...