0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

mysql数据库的五种索引类型

汽车玩家 来源:工控自动化专家 作者:工控自动化专家 2020-04-12 18:11 次阅读

MySQL索引类型:

1、普通索引

最基本的索引,它没有任何限制,用于加速查询。

创建方法:

a.建表的时候一起创建

CREATE TABLE mytable ( name VARCHAR(32) , INDEX index_mytable_name (name) );

b. 建表后,直接创建索引

CREATE INDEX index_mytable_name ON mytable(name);

c. 修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_name (name);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

2、唯一索引

索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。

创建方法:

a.建表的时候一起创建

CREATE TABLE mytable ( `name` VARCHAR(32) , UNIQUE index_unique_mytable_name (`name`) );

b. 建表后,直接创建索引

CREATE UNIQUE INDEX index_mytable_name ON mytable(name);

c. 修改表结构

ALTER TABLE mytable ADD UNIQUE INDEX index_mytable_name (name);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

3、主键索引

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

创建方法:

a.建表的时候一起创建

CREATE TABLE mytable ( `id` int(11) NOT NULL AUTO_INCREMENT , `name` VARCHAR(32) , PRIMARY KEY (`id`) );

b. 修改表结构

ALTER TABLE test.t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);

注:如果是字符串字段,还可以指定索引的长度,在列命令后面加上索引长度就可以了(例如:name(11))

4、组合索引

指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用组合索引时遵循最左前缀集合。

创建方法:

a.建表的时候一起创建

CREATE TABLE mytable ( `id` int(11) , `name` VARCHAR(32) , INDEX index_mytable_id_name (`id`,`name`) );

b. 建表后,直接创建索引

CREATE INDEX index_mytable_id_name ON mytable(id,name);

c. 修改表结构

ALTER TABLE mytable ADD INDEX index_mytable_id_name(id,name);

5、全文索引

主要用来查找文本中的关键字,而不是直接与索引中的值相比较。

fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。

fulltext索引配合match against操作使用,而不是一般的where语句加like。

它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。

创建方法:

a. 建表的时候一起创建

CREATE TABLE `article` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(250) NOT NULL , `contents` text NULL , `create_at` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), FULLTEXT (contents) );

b. 建表后,直接创建索引

CREATE FULLTEXT INDEX index_article_contents ON article(contents);

c. 修改表结构

ALTER TABLE article ADD FULLTEXT INDEX index_article_contents(contents);

总结

虽然索引可以增加查询数据,但对于更新、创建或者删除的时候,需要去维护索引,导致性能会受影响,因此,索引也不能建立太多。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3716

    浏览量

    64052
  • MySQL
    +关注

    关注

    1

    文章

    789

    浏览量

    26301
收藏 人收藏

    评论

    相关推荐

    mysql怎么新建一个数据库

    mysql怎么新建一个数据库 如何新建一个数据库MySQL中 创建一个数据库MySQL中的基
    的头像 发表于 12-28 10:01 739次阅读

    数据库数据恢复—未开启binlog的Mysql数据库数据恢复案例

    mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎
    的头像 发表于 12-08 14:18 954次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—未开启binlog的<b class='flag-5'>Mysql</b><b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复案例

    eclipse怎么连接数据库mysql

    连接Eclipse和MySQL数据库可以通过JDBC(Java Database Connectivity)来实现。以下是详细步骤: 下载并安装MySQL数据库:你首先需要下载并安装
    的头像 发表于 12-06 11:06 1057次阅读

    MySQL数据库的url地址

    MySQL数据库的URL地址是用于连接到MySQL服务器的地址。URL是一统一资源定位符,用于指定特定资源的位置和访问方式。MySQL
    的头像 发表于 12-06 10:58 2208次阅读

    mysql数据库基础命令

    MySQL是一个流行的关系型数据库管理系统,经常用于存储、管理和操作数据。在本文中,我们将详细介绍MySQL的基础命令,并提供与每个命令相关的详细解释。 登录
    的头像 发表于 12-06 10:56 454次阅读

    mysql数据库备份与还原

    MySQL是一常见的关系型数据库管理系统,用于存储和管理数据。备份和还原数据库是非常重要的操作,可以保护
    的头像 发表于 11-23 14:32 1027次阅读

    MySQL数据库基础知识

    MySQL 是一开源的关系型数据库管理系统,它是目前最流行的数据库之一。MySQL 提供了一
    的头像 发表于 11-21 11:09 848次阅读

    mysql数据库如何创建数据

    MySQL是一常用的关系型数据库管理系统,可以用于创建和管理数据表。下面是一篇详细的关于MySQL数据
    的头像 发表于 11-21 11:08 1653次阅读

    数据库的clob类型如何导入和导出

    数据库的CLOB类型(Character Large Object)是用来存储大量字符数据的字段类型。它可以存储最大长度为4GB的字符数据
    的头像 发表于 11-21 10:51 3999次阅读

    数据库mysql基本增删改查

    MySQL是一开源的关系型数据库管理系统,常用于Web应用程序的数据存储和管理。通过使用MySQL,用户可以进行
    的头像 发表于 11-16 16:35 1362次阅读

    mysql是一个什么类型数据库

    MySQL是一关系型数据库管理系统(RDBMS),用于存储和管理大量结构化数据。它被广泛用于各种应用程序和网站的后端,包括电子商务平台、社交媒体网站、金融系统等等。
    的头像 发表于 11-16 14:43 1466次阅读

    数据库数据恢复—MySQL数据库表误删除记录的数据恢复案例

    数据库数据恢复环境: 一台本地windows sever操作系统服务器,服务器上部署mysql数据库单实例,引擎类型为innodb,表内
    的头像 发表于 11-09 15:16 1154次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>表误删除记录的<b class='flag-5'>数据</b>恢复案例

    什么是数据库?除了MySQL还有哪些数据库

    对于大多数项目,用 MySQL 等关系型数据库来存储数据就足够了。但关系型数据库不是银弹!在某些场景下,比如要存储的数据间没有关系时,它并不
    发表于 10-13 10:20 540次阅读
    什么是<b class='flag-5'>数据库</b>?除了<b class='flag-5'>MySQL</b>还有哪些<b class='flag-5'>数据库</b>?

    mysql数据库索引失效的10场景

    今天就跟大家一起聊聊,mysql数据库索引失效的10场景,给曾经踩过坑,或者即将要踩坑的朋友们一个参考。 1. 准备工作 所谓空口无凭,如果我直接把
    的头像 发表于 10-07 16:31 1223次阅读
    <b class='flag-5'>mysql</b><b class='flag-5'>数据库</b><b class='flag-5'>索引</b>失效的10<b class='flag-5'>种</b>场景

    如何在Rust中连接和使用MySQL数据库

    MySQL是一个广泛使用的关系型数据库,Rust作为一门相对较新的系统级编程语言,具有C语言般的高性能、安全、并发等特性,因此与MySQL一起使用是一非常有趣的选择。在本教程中,我们
    的头像 发表于 09-30 17:05 1433次阅读