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

    文章

    3993

    浏览量

    67730
  • MySQL
    +关注

    关注

    1

    文章

    897

    浏览量

    29219
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华纳云香港服务器数据库索引优化策略

    在香港服务器环境中,数据库索引优化是提升整体性能的关键因素。随着企业数据量的不断增长,高效的索引管理能显著提高查询速度并降低服务器负载。本文将深入探讨如何针对香港服务器(特别是其独特的
    的头像 发表于 10-16 17:06 364次阅读

    mysql数据恢复—mysql数据库表被truncate的数据恢复案例

    某云ECS网站服务器,linux操作系统,部署了mysql数据库。工作人员在执行数据库版本更新测试时,错误地将本应在测试执行的sql脚本在生产
    的头像 发表于 09-11 09:28 571次阅读
    <b class='flag-5'>mysql</b><b class='flag-5'>数据</b>恢复—<b class='flag-5'>mysql</b><b class='flag-5'>数据库</b>表被truncate的<b class='flag-5'>数据</b>恢复案例

    企业级MySQL数据库管理指南

    在当今数字化时代,MySQL作为全球最受欢迎的开源关系型数据库,承载着企业核心业务数据的存储与处理。作为数据库管理员(DBA),掌握MySQL
    的头像 发表于 07-09 09:50 504次阅读

    远程访问内网MySQL数据库?这个方案更简单

    各位开发者朋友们,是否还在为无法随时随地访问内网MySQL数据库而烦恼?今天分享一个超实用的方法,通过容器部署 MySQL 结合 ZeroNews 内网穿透,让你在任何地方都能安全访问和管理
    的头像 发表于 07-04 18:06 646次阅读
    远程访问内网<b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>?这个方案更简单

    MySQL数据库采集网关是什么?有什么功能?

    MySQL数据库采集网关是一用于连接、采集、处理并传输数据MySQL数据库的中间设备或软件系
    的头像 发表于 05-26 15:20 461次阅读

    MySQL数据库是什么

    MySQL数据库是一 开源的关系型数据库管理系统(RDBMS) ,由瑞典MySQL AB公司开发,后被Oracle公司收购。它通过结构化查
    的头像 发表于 05-23 09:18 913次阅读

    工业智能网关采集能耗数据对接到MySQL数据库

    实现步骤: 一、前期准备 设备选型:选择支持与水表、电表等能源仪表通讯以及MySQL数据库对接的工业智能网关,例如物通博联工业智能网关WG583,确保其能满足数据采集与传输的需求。 能耗设备连接:根据能耗设备的接口
    的头像 发表于 02-26 13:56 870次阅读
    工业智能网关采集能耗<b class='flag-5'>数据</b>对接到<b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>

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

    本地服务器,安装的windows server操作系统。 操作系统上部署MySQL单实例,引擎类型为innodb,表空间类型为独立表空间。该MySQL
    的头像 发表于 02-22 09:44 1202次阅读
    <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>恢复案例

    从Delphi、C++ Builder和Lazarus连接到MySQL数据库

      从 Delphi、C++ Builder 和 Lazarus 连接到 MySQL 数据库 MySQL 数据访问组件(MyDAC)是一个组件
    的头像 发表于 01-20 13:47 1314次阅读
    从Delphi、C++ Builder和Lazarus连接到<b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    和 Linux 的 wheel 包分发。 直接连接 该解决方案使您能够通过 TCP/IP 建立与 MySQL 或者 MariaDB 数据库服务器的直接连接,而无需数据库客户端。另外
    的头像 发表于 01-17 12:18 843次阅读
    适用于<b class='flag-5'>MySQL</b>和MariaDB的Python连接器:可靠的<b class='flag-5'>MySQL</b><b class='flag-5'>数据</b>连接器和<b class='flag-5'>数据库</b>

    分布式云化数据库有哪些类型

    分布式云化数据库有哪些类型?分布式云化数据库主要类型包括:关系型分布式数据库、非关系型分布式数据库
    的头像 发表于 01-15 09:43 864次阅读

    MySQL数据库的安装

    MySQL数据库的安装 【一】各种数据库的端口 MySQL :3306 Redis :6379 MongoDB :27017 Django :8000 flask :5000 【二】
    的头像 发表于 01-14 11:25 857次阅读
    <b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>的安装

    数据库是哪种数据库类型

    数据库是一部署在虚拟计算环境中的数据库,它融合了云计算的弹性和可扩展性,为用户提供高效、灵活的数据库服务。云数据库主要分为两大类:关系型
    的头像 发表于 01-07 10:22 793次阅读

    数据库数据恢复—Mysql数据库表记录丢失的数据恢复流程

    Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、
    的头像 发表于 12-16 11:05 1000次阅读
    <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数据库ibdata1文件损坏的数据恢复案例

    mysql数据库故障: mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用my
    的头像 发表于 12-09 11:05 1045次阅读