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

    文章

    4101

    浏览量

    68791
  • MySQL
    +关注

    关注

    1

    文章

    944

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MySQL 实例每天都该体检一次,ChatDBA 帮你把性能隐患提前看见

    NineData ChatDBA 作为一款通用的数据库性能治理智能体,并不只服务于 MySQL 场景。目前已经支持数十主流数据源,包括 Oracle、PostgreSQL、SQL S
    的头像 发表于 06-02 14:51 569次阅读
    <b class='flag-5'>MySQL</b> 实例每天都该体检一次,ChatDBA 帮你把性能隐患提前看见

    系统讲解MySQL数据库慢查询优化思路

    MySQL 是业务系统最常用的数据库,跑着跑着突然接口超时、数据库 CPU 飙升、连接数打满,这些问题排查思路是什么?本文从运维角度出发,讲清楚 MySQL 慢查询的分析方法、
    的头像 发表于 05-30 13:53 160次阅读

    2026年MySQL性能调优实战:用Gemini镜像站诊断慢查询与索引优化(国内直访教程)

    国内后端开发者和DBA在面对数据库响应变慢时,常需要分析慢查询日志、解读EXPLAIN执行计划并制定索引策略。借助大模型来加速这些分析任务,本教程将深入慢查询诊断、索引设计、配置参数调优等硬核场景
    的头像 发表于 05-27 23:01 193次阅读
    2026年<b class='flag-5'>MySQL</b>性能调优实战:用Gemini镜像站诊断慢查询与<b class='flag-5'>索引</b>优化(国内直访教程)

    新版架构师系列-ShardingJDBC分库分表mysql数据库实战

    ,支持分布式事务、在线DDL、智能分片。中小团队用它,性价比极高。 方案三:Vitess,云原生首选。 Google开源、CNCF毕业项目。它把MySQL当成一个分布式数据库来用,K8s原生集成,自动分片
    发表于 05-18 17:01

    MySQL数据库慢查询的排查思路和最佳实践

    数据库慢查询是导致应用响应缓慢最常见的原因之一。当业务人员反馈“页面加载慢”、“查询超时”、“系统卡顿”时,很多运维人员的第一反应是让开发人员“加个索引”。但加索引只是优化查询的众多手段之一,盲目加
    的头像 发表于 04-24 14:40 255次阅读

    MySQL数据库慢查询分析与优化实战

    在讨论MySQL慢查询之前,需要先明确一个关键前提:什么是慢查询? 不同业务场景下,慢查询的定义差异巨大。一个数据报表后台的SQL执行30秒可能属于正常范围,但一个订单创建的数据库操作超过100毫秒就可能造成用户体验问题。因此,
    的头像 发表于 04-02 09:38 364次阅读

    恒讯科技解析:如何安装MySQL并创建数据库

    安装和管理MySQL不必复杂。只需几分钟,你就能在Linux服务器上搭建MySQL,创建第一个数据库,甚至自动化备份——同时确保数据安全有序。 什么是
    的头像 发表于 01-14 14:25 530次阅读

    工业数据中台支持接入MySQL数据库

    工业数据中台完全支持接入MySQL数据库 ,且通过数据同步、集成与治理等技术手段,能够充分发挥MySQL
    的头像 发表于 12-04 11:23 596次阅读
    工业<b class='flag-5'>数据</b>中台支持接入<b class='flag-5'>MySQL</b><b class='flag-5'>数据库</b>吗

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

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

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

    某云ECS网站服务器,linux操作系统,部署了mysql数据库。工作人员在执行数据库版本更新测试时,错误地将本应在测试执行的sql脚本在生产
    的头像 发表于 09-11 09:28 1438次阅读
    <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>恢复案例

    不用编程序无需联外网,将Rockwell罗克韦尔(AB)PLC的标签数据存入SQL数据库

    IGT-DSER智能网关模块,支持各种PLC、智能仪表、远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库查询数据
    发表于 07-31 10:33

    数据库数据恢复—服务器异常断电导致Oracle数据库故障的数据恢复案例

    Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库
    的头像 发表于 07-24 11:12 991次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—服务器异常断电导致Oracle<b class='flag-5'>数据库</b>故障的<b class='flag-5'>数据</b>恢复案例

    企业级MySQL数据库管理指南

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

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

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

    数据库数据恢复—SQL Server数据库被加密如何恢复数据

    SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
    的头像 发表于 06-25 13:54 953次阅读
    <b class='flag-5'>数据库</b><b class='flag-5'>数据</b>恢复—SQL Server<b class='flag-5'>数据库</b>被加密如何恢复<b class='flag-5'>数据</b>?