`

MYSQL数据库四种索引类型的简单使用

 
阅读更多

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数据库四种索引类型介绍

    MySQL数据库中的索引是提升查询性能的关键工具,主要分为四种类型:主键索引、唯一索引、普通索引和全文索引。 1. **主键索引**:主键索引是唯一性索引的一种特殊形式,它要求索引列的值必须是唯一的,并且不可为...

    mysql数据库索引类型

    MySQL数据库索引类型 MySQL数据库索引是指在关系型数据库管理系统中,用于提高查询速度和优化数据库性能的一种机制。索引是对数据库表中某一列或多列的值进行排序和组织,以便快速定位和检索数据。 一、MySQL...

    MySQL数据库:索引概述.pptx

    **MySQL数据库索引概述** 索引是数据库管理系统中不可或缺的一部分,尤其在处理大规模数据时,它的存在极大地提高了数据检索的效率。在MySQL中,索引是一个独立的、物理的数据库结构,它由表中一列或多列的集合以及...

    MYSQL数据库修复程序

    MySQL数据库修复程序是一种技术密集型的过程,主要用于解决数据库在运行过程中遇到的各种问题,如数据丢失、表损坏、系统崩溃等。在本场景中,我们关注的是如何通过特定工具,如Navicat,来管理和修复MySQL数据库中...

    Mysql数据库文档生成工具(含使用说明)

    MySQL数据库文档生成工具是一款高效实用的软件,专为MySQL数据库设计者和开发者提供方便,能够自动生成详尽的数据库设计文档。这款工具极大地简化了在项目验收阶段对数据库设计进行整理和呈现的工作流程,尤其适合...

    MySQL数据库:使用NAVICAT工具创建和管理索引.pptx

    MySQL数据库是世界上最流行的开源关系型数据库管理系统之一,用于存储和管理数据。索引在数据库中扮演着关键角色,它能够显著提升数据查询的效率。在MySQL中,索引的管理和创建是数据库性能优化的重要环节。NAVICAT...

    MySQL数据库基础与实例教程所有资源

    MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于学习的特性深受开发者喜爱。本教程将全面介绍MySQL的基础知识,并通过实例帮助你掌握其核心操作。 首先,我们来了解一下MySQL的基本...

    MySQL数据库应用形考实验1-4全答案.zip

    MySQL数据库是一种广泛应用于Web开发和企业级数据存储的开源关系型数据库管理系统。在这个"MySQL数据库应用形考实验1-4全答案.zip"压缩包中,包含了四个关于MySQL基础操作的实验训练,涵盖了从数据库和表的创建,到...

    国家开放大学 MySQL数据库应用 实验训练4:数据库系统维护

    MySQL 数据库应用实验训练 4:数据库系统维护 本实验训练旨在帮助学生理解视图和索引的概念和作用,掌握视图和索引的基本操作,并且了解它们在数据库系统维护中的应用。 一、视图的概念和作用 视图是一种基于基表...

    国家开放大学 数据库运维 形考2 MySQL数据库对象管理

    通过本节实验,学生掌握了 MySQL 中的基本数据库对象管理命令和操作方法,包括数据字典、表、索引、视图的创建、修改和删除等操作。学生也学习了如何使用 MySQL Workbench 图形化工具来实现这些操作,并对照实验内容...

    深入浅出MySQL数据库开发、优化与管理维护.doc

    在设计索引时,需要遵循一定的原则,例如,使用合适的索引类型、创建唯一索引等。 查询优化 查询优化是数据库开发的重要步骤,需要考虑到查询性能和数据存储的需求。在优化查询时,需要遵循一定的原则,例如,使用...

    实验2 MySQL数据库对象管理.pdf

    本实验的目的是使学生理解并掌握MySQL数据库中关键对象(数据字典、表、索引、视图)的作用和操作方法。通过一系列的操作实践,学生将能更深入地了解数据库对象管理,并能在实际工作中进行相关维护和操作。

    pbootcms数据sqlite转mysql数据库

    标题 "pbootcms数据sqlite转mysql数据库" 涉及的是一个常见的数据库迁移过程,从SQLite数据库系统转换到MySQL数据库系统。这个过程在网站或应用的开发和维护中经常遇到,尤其是在更换数据库服务或者需要更强大的...

    mysql数据库cmd命令大全

    本文档总结了 MySQL 数据库 cmd 命令的使用方法和实践经验,涵盖了连接数据库、授权、数据库操作、表操作、字段类型、修改密码、备份数据库、数据库导入和导出、表索引等方面的知识点。 连接数据库 1. 本地连接 ...

    mysql数据库基础全部课件

    3. 事务隔离级别:介绍四种不同的事务隔离级别及其对并发操作的影响。 七、视图与存储过程 1. 视图:学习如何创建和使用视图,理解视图在数据抽象和安全性方面的作用。 2. 存储过程:理解存储过程的概念,编写和...

    MySQL数据库中关于索引的研究.pdf

    本文主要探讨了MySQL数据库索引的原理、类型和优化方法。作者通过实例分析,展示了索引在解决数据库性能问题上的重要作用。 首先,作者指出在数据库应用系统中,查询操作通常比更新操作更为频繁,因此查询性能的...

    MySQL-数据库-索引详解

    MySQL 数据库索引是一种特殊的数据库结构,可以快速查询数据库表中特定记录。索引是提高数据库性能的重要方式。 索引的概念 ---------------- 索引是表中数据的目录。如果使用索引,则扫描索引文件,根据索引项,...

Global site tag (gtag.js) - Google Analytics