首页 > 数据库 >mysql索引(转)

mysql索引(转)

时间:2023-09-02 17:44:42浏览次数:53  
标签:存储 聚簇 全文索引 索引 哈希 mysql 主键

转载:https://www.php.cn/faq/493277.html

一、数据结构区分

1.1.B+tree索引

根据存储方式,mysql可以分为B+tree索引和哈希索引

B+tree索引可以进行全键值、键值范围和键值前缀查询

1.2.哈希索引

哈希索引也称为散列索引或 HASH 索引。MySQL 目前仅有 MEMORY 存储引擎和 HEAP 存储引擎支持这类索引

哈希索引的特点是访问速度快,但也有缺点

1.计算哈希值比较费时

2.哈希值只能支持等值比较,=,!=,in,不支持范围查询

3.哈希索引不支持键的部分匹配

二、逻辑区分

2.1.普通索引

普通索引的目的是为了加快访问速度,普通索引允许在定义索引的列中插入重复值和空值。
创建普通索引时,通常使用的关键字是 INDEX 或 KEY

`create index std_id on student(id) `

2.2.唯一索引

唯一索引的目的是为了避免出现重复值,所以索引所在列不能有空值

创建普通索引一般使用unique

`create unique index std_uid on student(id)`

2.3.主键索引

主键索引是一种特殊的唯一索引,不允许有重复值和空值

创建主键索引通常使用 PRIMARY KEY 关键字

2.4.全文索引(full text)

全文索引主要勇于查找文本中的关键字,只能建立在char,varchar,text类型的列上,且mysql只有myisam支持全文索引

全文索引非常耗时和占用存储空间.

创建全文索引使用fulltext关键字

`create fulltext index info_id on student(info)`

2.5.空间索引

空间索引是对空间数据类型建立的索引,使用SPATIAL关键字进行创建,且只有MYISAM引擎支持空间索引

空间索引主要用于地理空间数据类型 GEOMETRY。而且索引列必须声明为not null,

`create spatial index stu_line_id on student(line)`

 

三、使用区分

3.1.单列索引

建立在某一列上的索引就是单列索引

3.2.复合索引(多列索引)

建立在2列或多列上的索引是复合索引,例如

`create index std_na on stduent(name,address)`

该索引指向创建时对应的多个字段,可以通过这几个字段进行查询。

但是,只有查询条件中使用了这些字段中第一个字段时(name),索引才会被使用。

 

四、物理存储

4.1.聚簇索引

按照索引的每个叶子节点存储的是否为完整表数据,分为聚簇索引和二级索引

InnoDB表要求必须有聚簇索引,默认在主键字段上建立聚簇索引.

以MyISAM为存储引擎的表不存在聚簇索引。

MyISAM表中的主键索引和非主键索引的结构是一样的,索引的叶子节点不存储表数据,存放的是表数据的地址。所以,MyISAM表可以没有主键。

4.2.辅助索引(二级索引)

二级索引的叶子节点不存储一行完整数据,只存储聚簇索引的值

 

标签:存储,聚簇,全文索引,索引,哈希,mysql,主键
From: https://www.cnblogs.com/wangbin2188/p/17673961.html

相关文章

  • mysql decode()
    mysqldecode()    举例:    oracle: select  decode(pay_name, ' aaaa ' , ' bbb ' ,pay_name), sum (comm_order), sum (suc_order), sum (suc_amount)  From   payment.order_tab   group   by  decode(pay_name, ' aaaaa ' , ' bb......
  • 12.mysql数据查询
    下面是一些MySQL数据库中的数据查询操作示例,包括单表查询和多表查询,以及相应的示例数据表。单表查询:假设我们有一个名为products的表,用于存储产品信息:CREATETABLEproducts(product_idINTPRIMARYKEY,product_nameVARCHAR(255),categoryVARCHAR(50),......
  • 9.mysql 高可用性和故障恢复
    当考虑在MySQL数据库中实现高可用性和故障恢复时,以下是更详细的步骤和策略:主从复制(Master-SlaveReplication):配置一个主数据库和多个从数据库。启用二进制日志(binarylog)和从数据库的复制功能。设置适当的复制方式(异步复制通常用于高可用性,但可能会有些许延迟)。使......
  • mysql监控和维护
    对MySQL进行监控和维护是确保数据库性能和稳定性的关键部分。以下是一些常见的MySQL监控和维护任务:1.监控工具和服务:MySQLWorkbench:这是MySQL官方提供的一款图形化管理工具,提供性能监控和诊断工具。PerconaToolkit:包括各种有用的工具,如pt-query-digest用于分析慢查询、p......
  • 【Mysql | 空值处理 】
    MySQL中,空值通常用于表示缺失或未定义的值。处理空值的关键在于理解空值与其他值之间的关系,以及如何使用不同的SQL函数来处理和转换空值。(空值处理)NULLValues(空值)MySQL使用SQLSELECT命令及WHERE子句来读取数据表中的数据,但是当提供的查询条件字段为NULL时,该......
  • centos查看mysql默认密码和修改密码
    1、查看mysql默认密码:grep‘temporarypassword’/var/log/mysqld.logroot@localhost:b_1sZou9FZrtb_1sZou9FZrt就是2、修改mysql密码:ALTERUSER‘root’@‘localhost’IDENTIFIEDBY‘newpassword’;‘newpassword’替换成你要设置的密码,注意:密码设置必须要大小写字母数......
  • mysql周week函数
    WEEK(date[,mode])WEEK()函数会返回一个日期的周数,第2个参数mode可以指定一周是从周日开始还是周一开始,以及返回值的范围是[0,53]还是[1,53],如果第2个参数缺失了,则使用系统变量default_week_format的值ModeFirstdayofweekRangeWeek1isthefirstweek…......
  • 泛微E-Office mysql_config.ini 数据库信息泄漏漏洞
    漏洞描述泛微E-Officemysql_config.ini文件可直接访问,泄漏数据库账号密码等信息漏洞复现fofa语法:app="泛微-EOffice"登录页面如下:验证POC:/mysql_config.ininuclei批量yaml文件id:EOffice_mysql_config_information_leakinfo:name:泛微OAE-Officemysql_config.i......
  • 关于windows定时任务备份mysql
    windows 定时一、右击我的电脑->选择管理->任务计划程序,打开计划任务二、开始创建任务计划。1、常规设置?都懂不再多说。2、触发器:新建->设置一个时间3、操作:新建->选择一个可执行程序,参数如果执行PHP备份mysql。首先mysql加入环境变量,直到mysql在命令行能执行如在path中新......
  • docker-compose教程:部署MySQL完整步骤
    目录结构root@localhostmysql#tree.├──conf│└──my.cnf├──db├──docker-compose.yml└──init└──init.sqldocker-compose.ymlversion:'2'services:mysql:#network_mode:"host" #将直接使用主机端口environment:......