MySQL索引类型

MySQL索引类型——有五种 mysql中索引类型有:最基本的没有限制的普通索引,索引列的值必须唯一的唯一索引,主键索引,多个字段上创建的组合索引以及用来查找文本中的关键字的全文索引。 阅读详情

一、简介

MySQL目前主要有以下几种索引类型:
1.普通索引
2.唯一索引
3.主键索引
4.组合索引
5.全文索引

二、语句

CREATE TABLE table_name[col_name data type]
[unique|fulltext][index|key][index_name](col_name[length])[asc|desc]

1.unique|fulltext为可选参数,分别表示唯一索引、全文索引
2.index和key为同义词,两者作用相同,用来指定创建索引
3.col_name为需要创建索引的字段列,该列必须从数据表中该定义的多个列中选择
4.index_name指定索引的名称,为可选参数,如果不指定,默认col_name为索引值
5.length为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度
6.asc或desc指定升序或降序的索引值存储

三、索引类型

1.普通索引
是最基本的索引,它没有任何限制。它有以下几种创建方式:
(1)直接创建索引

CREATE INDEX index_name ON table(column(length))

(2)修改表结构的方式添加索引

ALTER TABLE table_name ADD INDEX index_name ON (column(length))

(3)创建表的时候同时创建索引

 

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER NOT NULL ,
    `content` text CHARACTER NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    INDEX index_name (title(length))
)

 

(4)删除索引

DROP INDEX index_name ON table

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

CREATE UNIQUE INDEX indexName ON table(column(length))

(2)修改表结构

ALTER TABLE table_name ADD UNIQUE indexName ON (column(length))

(3)创建表的时候直接指定

 

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER NOT NULL ,
    `content` text CHARACTER NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    UNIQUE indexName (title(length))
);

 

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

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) NOT NULL ,
    PRIMARY KEY (`id`)
);

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

ALTER TABLE `table` ADD INDEX name_city_age (name,city,age); 

5.全文索引
主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。它可以在create table,alter table ,create index使用,不过目前只有char、varchar,text 列上可以创建全文索引。值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。
(1)创建表的适合添加全文索引

 

CREATE TABLE `table` (
    `id` int(11) NOT NULL AUTO_INCREMENT ,
    `title` char(255) CHARACTER NOT NULL ,
    `content` text CHARACTER NULL ,
    `time` int(10) NULL DEFAULT NULL ,
    PRIMARY KEY (`id`),
    FULLTEXT (content)
);

 

(2)修改表结构添加全文索引

ALTER TABLE article ADD FULLTEXT index_content(content)

(3)直接创建索引

CREATE FULLTEXT INDEX index_content ON article(content)

四、缺点

1.虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行insert、update和delete。因为更新表时,不仅要保存数据,还要保存一下索引文件。
2.建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会增长很快。
索引只是提高效率的一个因素,如果有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

五、注意事项

使用索引时,有以下一些技巧和注意事项:
1.索引不会包含有null值的列
只要列中包含有null值都将不会被包含在索引中,复合索引中只要有一列含有null值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为null。
2.使用短索引
对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个char(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。
3.索引列排序
查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。
4.like语句操作
一般情况下不推荐使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。
5.不要在列上进行运算
这将导致索引失效而进行全表扫描,例如

SELECT * FROM table_name WHERE YEAR(column_name)<2017;
银河麒麟系统安装redis【亲测可行】 架构:Linux 5.10.0-9-generic x86_64 GNU/Linux。redis版本:redis-6.2.3.tar.gz。然后在执行make install,结束;OS:银河麒麟V10(SP1)未激活。cpu:I5-10代; 阅读详情

相关推荐

电力远动入门:手把手解析IEC 60870-5-101规约的帧结构与报文交互(基于DL/T634.5101-2002)

本文深入解析IEC 60870-5-101规约的帧结构与报文交互,适用于电力远动通信系统。通过详细讲解规约的基础架构、控制域位定义及典型报文交互流程,帮助工程师快速掌握101规约的核心技术,提升电力自动化系统的调试与维护能力。

weixin_27076351的博客 245

mysql索引有哪些类型?

MySQL目前主要有的索引类型为:普通索引、唯一索引、主键索引、组合索引、全文索引。 通过给字段添加索引可以提高数据的读取速度,提高项目的并发能力和抗压能力。索引优化时mysql中的一种优化方式。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。 下面我们来看看MySQL目前主要有的索引类型: 1、普通索引 普通索引是最基本的索引,它没有任何限制,值可以为空;仅加速查询。可以通过以下几种方式来创建或删除: 1)、直接创建索引 CREATE INDEX index_name ON ta

Iam8600的博客 3万+

WhatsApp API接口的隐秘角落:从协议解析到自定义消息引擎

本文深入解析WhatsApp API接口的隐秘角落,从协议逆向工程到自定义消息引擎开发实战。通过分析WhatsApp的二进制XML协议和加密机制,构建超越官方API限制的自定义消息引擎,实现高效、灵活的即时通讯解决方案。文章还提供了企业级架构设计和风控规避策略,助力开发者突破官方限制,提升消息到达率和成本效益。

q3r4s5t的博客 761

mysql索引的理解

可能存储在单独的索引文件中,也可能和数据一起存储在数据文件中)对数据进行排序,降低了排下序成本。B树B+树B+树。

m0_68274160的博客 1204

基于Canfestival的对象字典工具objdictedit.py的运行环境配置

本文以菜狗的视角,一步一步地对对象字典的环境进行配置,旨在能给读者一个比较详细的参考,不恰之处,还请指正。

在线求职中... 3708

深入解析FPGA中的GTX高速收发器架构与设计原理

本文深入解析了FPGA中GTX高速收发器的核心架构与设计原理。文章将GTX比作数据“高速公路”,详细拆解了其PMA(物理媒介适配层)与PCS(物理编码子层)的双层结构,阐述了串并转换、时钟恢复等关键技术,并提供了时钟源选型(QPLL/CPLL)、上电复位流程及信号完整性调试等实战指南,是掌握高速接口设计的必备知识。

f6g7h8i9j的博客 219

MySQL有哪些索引?

mysql中有主键索引、唯一索引、普通索引、组合索引、全文索引

一名后端程序猿 1万+

【100%通过率】华为OD机试真题 C++ 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

MySQL索引的分类及区别

目录数据库的索引类型聚集索引和非聚集索引的区别唯一索引和主键的区别 数据库的索引类型 从物理存储角度,索引可以分为以下两类: 聚集索引:主索引文件和数据文件为同一份文件,数据的排列顺序和索引的排列顺序一致。 非聚集索引:非聚集索引的叶子层并不和实际数据页相重叠,数据和索引的排列顺序不一定一致。 从逻辑角度,索引可以分为以下几类: 普通索引:最基本的索引,它没有任何的限制,仅加速查询。 唯一索引:它与前面的普通索引类似,不同的是索引列的值必须唯一,但允许有空值。 主键索引:它是一种特殊的唯一索引,不允许

TABE_的博客 2620

AI游戏制作07——波次计时器,敌人按波次生成

AI游戏制作07——波次计时器,敌人按波次生成

qq_40572023的博客 47

MobSF-v3源代码分析(一)

移动安全框架(MobSF)是一种自动化的移动应用程序(Android/iOS/Windows)测试框架,能够执行静态、动态和恶意软件分析。 它可用于Android、iOS和Windows移动应用程序的有效和快速安全分析,并支持二进制文件(APK,IPA和APPX)和压缩源代码。 MobSF可以在运行时为Android应用程序进行动态应用程序测试,并具有由CapFuzz(一种特定于Web API的安全扫描程序)提供支持的Web API模糊测试。MobSF旨在使您的CI/CD或DevSecOps管道集成无缝。

武天旭的博客 8960

什么是索引?Mysql目前主要的几种索引类型

一、索引MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要确保该索引是应用在 SQ...

liutong123987的专栏 18万+

PCB仿真软件:Altium Designer_(18).PCB设计中的热管理

在PCB设计中,热管理是一个至关重要的环节。随着电子设备的集成度越来越高,功耗和发热量也随之增加,不合理的热设计可能导致电路板过热,从而影响电路的性能和可靠性。热管理不仅能够提高电路板的使用寿命,还能确保电路在各种环境条件下的稳定工作。本节将详细介绍如何在Altium Designer中进行有效的热管理,包括热分析、热设计和热仿真等关键步骤。

kkchenjj的博客 1986

mysql的索引类型和索引方法

mysql的索引类型和索引方法

橙-极纪元-JJYCheng 2128

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

MySQL的索引类型

列是一个地理数据类型,创建了一个空间索引,用于地理位置查询。列被定义为主键,MySQL会自动为这个列创建一个主键索引。列创建了一个前缀索引,只索引了内容的前100个字符。两个列,可以加速同时涉及这两个字段的查询。列创建了一个普通索引,用来加速基于。这个例子创建了一个组合索引,包含。

龙大的博客 1544

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MYSQL 索引类型

一、索引类型 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表 代码如下: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了10000条记录,其中有一条:5555, admin。 在查找username="admin"的记录 SELECT * FROM mytable WHERE username=‘admin’;时,如果在username上已

weixin_42100694的博客 5651

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

MySQL 索引的类型

MySQL 提供多种索引类型,不同索引在不同场景下有不同的优化作用。

qq_45638953的博客 1084

Mysql索引类型与索引方法

写在前面: 乍一看这两个概念可能有点混,先上一张发图。 索引类型就是我们平常说的唯一索引,主键索引,组合索引等索引类型。 我们都知道索引是一种数据结构,到底我们建的索引应该以什么样的结构存储呢?存储的结构不一样有什么优缺点呢?这就是索引方法的概念。常见的索引方法有BTREE,FULLTEXT, HASH等。 一,索引类型 MySql常见索引类型有:主键索引、唯一索引、普通索引、全文索引、组合索引 1.1,普通索引 这种是最常见的。 ALTER TABLE `table_na..

Bolg of EQuaker 9876

MySQL的索引类型有哪些

MySQL数据库系统中的索引是用来加快搜索和检索数据库记录的数据结构。这些索引类似于书籍的目录,帮助MySQL快速定位数据表中的数据,而无需逐行扫描整个表。

常备不懈 2844

MySQL 的索引类型有哪些?

在 MySQL 中,索引有不同的类型,根据数据结构、存储方式和功能进行分类。的关键机制,它类似于书籍的目录,可以加速数据的查找和排序。在实际开发中,合理选择索引类型可以显著提升查询性能 🚀!索引(Index)是 MySQL。

Zero_pl的博客 1427

mysql之索引类型

1.normal(普通索引):是普通索引,没有限制。 2.UNIQUE(唯一索引):是唯一的,不允许重复的索引。索引列的值必须唯一,但是允许为空值。 3.FULLTEXT(全文索引):是全文搜索的索引。主要用来查找文本(索引列的值)中的关键字 4.spatial(空间索引):是对空间数据类型的字段建立的索引。MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTR...

半生@浮名的博客 2348

MYSQL的<索引类型>和<索引方法>

不同的索引方法有不同的特点和适用场景,在实际应用中需要根据具体的业务需求和查询场景选择合适的索引方法,以提高数据库的查询性能。不同的索引类型适用于不同的场景,合理选择索引类型可以显著提高数据库的查询性能。需要注意的是,空间索引要求被索引的列必须被声明为。

weixin_49496875的博客 1019

Mysql索引类型总结

CHARVARCHARTEXTCHARVARCHARTEXT数据表的主键列使用的就是主键索引。一张数据表有只能有一个主键,并且主键不能为 null,不能重复。在 MySQL 的 InnoDB 的表中,当没有显示的指定表的主键时,InnoDB 会自动先检查表中是否有唯一索引且不允许存在 null 值的字段,如果有,则选择该字段为默认的主键,否则 InnoDB 将会自动创建一个 6Byte 的自增主键。主键索引。

2401_86844317的博客 1665

mysql中的索引类型有哪些

值得一提的是,在数据量较大时候,现将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。索引只是提高效率的一个因素,如果有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。那么就不要对整个列进行索引。

努力努力,努力努力的博客 2753

MySQL的索引类型有哪些?

在实际应用中,根据数据规模和查询模式选择合适的索引类型,可以显著提升数据库的查询性能。例如,针对一个电商应用,商品 ID、价格等适合使用 B-Tree 索引,热门评论的关键字搜索适合使用全文索引,基于地理位置的查找则需要使用空间索引。选择适合的索引不仅能够加速查询,还能够减少存储开销、提高整体系统性能。

小萌学习笔记 1421

MySQL 的索引类型有哪些?应该怎么选择?

本文解析MySQL的索引类型(主键、唯一、普通、全文、空间、组合),适用场景及选择策略!

分享即是最好的学习 4174
上一篇: InnoDB锁问题
下一篇: MySQL-reset slave 操作
纠结的逗号
博客等级 码龄10年 2粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值