搜索
首页数据库mysql教程MySQL索引类型大汇总

MySQL索引类型大汇总

Jun 07, 2016 pm 04:09 PM
mysql主要汇总类型索引

本文主要介绍了7种不同类型的MySQL索引类型。在MySQL数据库表中,对字段进行建立索引是可以大幅度的提高其实际查询速度。通过对这些索引的巧妙的运用,我们可以令MySQL的查询和运行更加高效。 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很

本文主要介绍了7种不同类型的MySQL索引类型。在MySQL数据库表中,对字段进行建立索引是可以大幅度的提高其实际查询速度。通过对这些索引的巧妙的运用,我们可以令MySQL的查询和运行更加高效。

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。

下面介绍几种常见的MySQL索引类型:

在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:

<ol class="dp-xml"><li class="alt"><span><span>CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); </span></span></li></ol>

我们随机向里面插入了10000条记录,其中有一条:5555, admin。

在查找username="admin"的记录

<ol class="dp-xml"><li class="alt"><span><span>SELECT * FROM mytable WHERE </span><span class="attribute">username</span><span>=</span><span class="attribute-value">'admin'</span><span>; </span></span></li></ol>

时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。

索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。

MySQL索引类型包括:

(1)普通索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

创建索引

<ol class="dp-xml"><li class="alt"><span><span>CREATE INDEX indexName ON mytable(username(length)); </span></span></li></ol>

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。

修改表结构

<ol class="dp-xml"><li class="alt"><span><span>ALTER mytable ADD INDEX [indexName] ON (username(length)) </span></span></li></ol>

创建表的时候直接指定

<ol class="dp-xml"><li class="alt"><span><span>CREATE TABLE mytable( ID INT NOT NULL, <br>username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); </span></span></li></ol>

删除索引的语法:

<ol class="dp-xml"><li class="alt"><span><span>DROP INDEX [indexName] ON mytable; </span></span></li></ol>

(2)MySQL索引类型:唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

创建索引

<ol class="dp-xml"><li class="alt"><span><span>CREATE UNIQUE INDEX indexName ON mytable(username(length)) </span></span></li></ol>

修改表结构

<ol class="dp-xml"><li class="alt"><span><span>ALTER mytable ADD UNIQUE [indexName] ON (username(length)) </span></span></li></ol>

创建表的时候直接指定

<ol class="dp-xml"><li class="alt"><span><span>CREATE TABLE mytable( ID INT NOT NULL, <br>username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) ); </span></span></li></ol>

(3)MySQL索引类型:主键索引

它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引:

<ol class="dp-xml"><li class="alt"><span><span>CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) ); </span></span></li></ol>

当然也可以用 ALTER 命令。记住:一个表只能有一个主键。

(4)组合索引

为了形象地对比单列索引和组合索引,为表添加多个字段:

<ol class="dp-xml"><li class="alt"><span><span>CREATE TABLE mytable( ID INT NOT NULL, username <br>VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL ); </span></span></li></ol>

为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里:

<ol class="dp-xml"><li class="alt"><span><span>ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); </span></span></li></ol>

建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。

如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。

建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:

<ol class="dp-xml"><li class="alt"><span><span>usernname,city,age usernname,city usernname </span></span></li></ol>

以上的相关内容就是对MySQL索引类型的部分内容的介绍,望你能有所收获。


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL:初学者的基本技能MySQL:初学者的基本技能Apr 18, 2025 am 12:24 AM

MySQL适合初学者学习数据库技能。1.安装MySQL服务器和客户端工具。2.理解基本SQL查询,如SELECT。3.掌握数据操作:创建表、插入、更新、删除数据。4.学习高级技巧:子查询和窗口函数。5.调试和优化:检查语法、使用索引、避免SELECT*,并使用LIMIT。

MySQL:结构化数据和关系数据库MySQL:结构化数据和关系数据库Apr 18, 2025 am 12:22 AM

MySQL通过表结构和SQL查询高效管理结构化数据,并通过外键实现表间关系。1.创建表时定义数据格式和类型。2.使用外键建立表间关系。3.通过索引和查询优化提高性能。4.定期备份和监控数据库确保数据安全和性能优化。

MySQL:解释的关键功能和功能MySQL:解释的关键功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一个开源的关系型数据库管理系统,广泛应用于Web开发。它的关键特性包括:1.支持多种存储引擎,如InnoDB和MyISAM,适用于不同场景;2.提供主从复制功能,利于负载均衡和数据备份;3.通过查询优化和索引使用提高查询效率。

SQL的目的:与MySQL数据库进行交互SQL的目的:与MySQL数据库进行交互Apr 18, 2025 am 12:12 AM

SQL用于与MySQL数据库交互,实现数据的增、删、改、查及数据库设计。1)SQL通过SELECT、INSERT、UPDATE、DELETE语句进行数据操作;2)使用CREATE、ALTER、DROP语句进行数据库设计和管理;3)复杂查询和数据分析通过SQL实现,提升业务决策效率。

初学者的MySQL:开始数据库管理初学者的MySQL:开始数据库管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括创建数据库、表格,及使用SQL进行数据的CRUD操作。1.创建数据库:CREATEDATABASEmy_first_db;2.创建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入数据:INSERTINTObooks(title,author,published_year)VA

MySQL的角色:Web应用程序中的数据库MySQL的角色:Web应用程序中的数据库Apr 17, 2025 am 12:23 AM

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

mysql:构建您的第一个数据库mysql:构建您的第一个数据库Apr 17, 2025 am 12:22 AM

构建MySQL数据库的步骤包括:1.创建数据库和表,2.插入数据,3.进行查询。首先,使用CREATEDATABASE和CREATETABLE语句创建数据库和表,然后用INSERTINTO语句插入数据,最后用SELECT语句查询数据。

MySQL:一种对数据存储的初学者友好方法MySQL:一种对数据存储的初学者友好方法Apr 17, 2025 am 12:21 AM

MySQL适合初学者,因为它易用且功能强大。1.MySQL是关系型数据库,使用SQL进行CRUD操作。2.安装简单,需配置root用户密码。3.使用INSERT、UPDATE、DELETE、SELECT进行数据操作。4.复杂查询可使用ORDERBY、WHERE和JOIN。5.调试需检查语法,使用EXPLAIN分析查询。6.优化建议包括使用索引、选择合适数据类型和良好编程习惯。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。