以下的文章主要介绍的是MySql数据库索引类型,其中包括普通索引,唯一索引,主键索引与主键索引,以及对这些索引的实际应用或是创建有一个详细介绍,以下就是文章的主要内容描述。
(1)普通索引
这是最基本的MySQL数据库索引,它没有任何限制。它有以下几种创建方式:
创建索引
- CREATE INDEX indexName ON mytable(username(length));
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。
修改表结构
ALTER mytable ADD INDEX [indexName] ON (username(length)) 创建表的时候直接指定
- CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) );
删除索引的语法:
- DROP INDEX [indexName] ON mytable;
(2)唯一索引
它与前面的普通索引类似,不同的就是:MySQL数据库索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
创建索引
CREATE UNIQUE INDEX indexName ON mytable(username(length)) 修改表结构
ALTER mytable ADD UNIQUE [indexName] ON (username(length)) 创建表的时候直接指定
- CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );
(3)主键索引
它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:
- CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) );
当然也可以用 ALTER 命令。记住:一个表只能有一个主键。
(4)组合索引
为了形象地对比单列索引和组合索引,为表添加多个字段:
- CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL );
为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:
ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。
如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。
建立这样的组合索引,其实是相当于分别建立了下面三组组合MySQL数据库索引:
usernname,city,age usernname,city usernname 为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合MySQL数据库索引:
SELECT * FROM mytable WHREE username="admin" AND city="郑州" SELECT * FROM mytable WHREE username="admin" 而下面几个则不会用到:
SELECT * FROM mytable WHREE age=20 AND city="郑州" SELECT * FROM mytable WHREE city="郑州"
相关推荐
【免费获取】MySQL数据库索引---总结的【文档+PPT】(可用于每日一讲)。
MySQL 数据库索引详解 MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。 索引的概念 ---------------- 索引是表中数据的目录。如果使用索引,则扫描...
MySQL数据库是全球最受欢迎的关系型数据库管理系统之一,尤其在Web应用程序中广泛应用。《MySQL数据库应用-从入门到精通》这本书旨在帮助读者系统地学习并掌握MySQL的相关知识,从基础概念到高级应用,涵盖全面,...
在这个"MySQL数据库应用形考实验1-4全答案.zip"压缩包中,包含了四个关于MySQL基础操作的实验训练,涵盖了从数据库和表的创建,到数据的查询、增删改,以及数据库系统的维护等关键知识点。以下是对这些实验的详细...
MySQL数据库索引类型 MySQL数据库索引是指在关系型数据库管理系统中,用于提高查询速度和优化数据库性能的一种机制。索引是对数据库表中某一列或多列的值进行排序和组织,以便快速定位和检索数据。 一、MySQL...
mysql-数据库-索引详解.doc
MySQL Connector/J是MySQL数据库与Java应用程序之间的桥梁,它是一个实现了JDBC(Java Database Connectivity)标准的驱动程序,允许Java开发者在Java应用中访问和操作MySQL数据库。本资源提供的"mysql-connector-...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于使用的特点,在Web应用程序开发中占据了重要地位。本篇文章将深入探讨2022年MySQL数据库应用的相关知识点,主要针对形考(形式考核)中...
在这个"资源专区-小白必看-mysql数据库1-安装和配置-命令行简单使用"的压缩包文件中,你将找到一系列关于MySQL入门的教程,包括文字讲解和视频教程,特别适合初学者。以下是关于MySQL安装、配置及命令行基础使用的...
4. **JSON支持**:增强了对JSON数据类型的处理,可以进行JSON文档的索引、查询和更新。 5. **安全增强**:增加了密码加密和身份验证插件,提升了安全性。 6. **空间数据类型**:对GIS(地理信息系统)的支持得到了...
这里我们将深入探讨MySQL数据库应用在形考1-4中的相关知识点。 1. **SQL基础**: - **数据类型**:MySQL支持多种数据类型,如整型(INT)、浮点型(FLOAT、DOUBLE)、字符串(VARCHAR、TEXT)、日期/时间类型...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。MySQL因其高效、稳定和易于...在实际工作中,理解和熟练运用这些知识点是成为合格的MySQL数据库管理员的关键。
- **性能提升**:在这一版本中,MySQL数据库进行了大量优化,包括更快的查询速度、更高效的索引处理等。 - **安全性增强**:支持更强的身份验证协议,如caching_sha2_password,提供了更高的安全性。 - **JSON...
MySQL是世界上最受欢迎的开源数据库系统之一,特别是在Web应用程序中。MySQL 5.5.40是这个数据库管理系统的一个特定版本,发布于2013年,它...通过了解其特性和安装过程,用户可以更好地管理和利用MySQL数据库系统。
《Oracle与MySQL数据库索引设计与优化》这本书深入探讨了两个主流关系型数据库管理系统——Oracle和MySQL中的索引设计和优化策略。索引是数据库性能的关键因素,它们能够加速数据检索,提高系统效率,尤其在大数据量...
实验 4-4:删除视图 实验 4-5:创建索引 实验 4-6:删除索引 九、实验结果 通过本实验,我们掌握了视图和索引的概念和作用,并且掌握了视图和索引的基本操作。这些知识点可以帮助学生更好地理解和应用数据库系统...
### MySQL数据库及索引详解 #### 一、MySQL简介与数据库发展 MySQL是一款非常流行的开源关系型数据库管理系统,由瑞典MySQL AB公司开发。它以其高性能、稳定性和易用性著称,广泛应用于Web应用程序和企业级系统中...
索引是数据库中用于提高查询效率的数据结构,常见的索引类型有 B-Tree 索引、哈希索引等。在本实验中,我们为 STUDENT 表的姓名设置 3 字节的前缀索引和前三个字段的最左索引。 (4)为 STUDENT 表的姓名设置 3 ...
【标题】"jsd1906 达内数据库 06-MySQL.rar" 涉及的是关于MySQL数据库的学习资料,可能包含一系列的课程、笔记和源代码示例。达内是一家知名的IT培训机构,其课程通常涵盖全面且实用的IT技术知识。 【描述】"学习...
**MySQL数据库索引概述** 索引是数据库管理系统中不可或缺的一部分,尤其在处理大规模数据时,它的存在极大地提高了数据检索的效率。在MySQL中,索引是一个独立的、物理的数据库结构,它由表中一列或多列的集合以及...