首页 > 其他分享 >存储引擎 索引

存储引擎 索引

时间:2023-06-30 09:12:39浏览次数:50  
标签:index 存储 name 查询 索引 引擎 主键

存储引擎

mysql默认存储引擎为innodb,可以通过以下代码在创建表时指定存储引擎

create table my_myisam(
    --
    --
) engine = MyIsaM;

 

查看当前数据库支持的存储引擎

show engines;

 

 

 

引擎选择

 

索引分类

 

聚集索引:

数据行的物理存储顺序与列值(一般是主键的那一列)的 逻辑顺序相同,一个表中只能拥有一个聚集索引,而且聚集索引的叶子节点保存了完整的数据记录,可以直接获取。

二级索引:

也称辅助索引,非聚集索引,

数据行的物理存储顺序与列值(一般是主键的那一列)的 逻辑顺序不同,一个表中可以有多个非聚集索引,而且非聚集索引的叶子节点保存的是指向数据结点的指针,需要两次查询,第一次查询指针,第二次查询数据。

 

如图聚集索引叶子节点是数据,辅助索引叶子节点是主键

 

创建索引

create [unique | fulltext] index index_name on table_name (index_col_name,...);

-- 一个索引可以关联多个字段,称作联合索引或组合索引
-- 关联单个字段称作单列索引

查看索引

show index from table_name;

删除索引

drop index index_name on table_name;

索引性能分析

 

 

 

 

 explain执行计划

 

 最左前缀法则

 在使用联合索引时,如果存在范围查询,尽量加=,不加=也会导致后边的索引失效

索引失效

  • 在索引列上进行运算操作,索引失效
  • 字符串类型字段使用时,不加引号,索引失效
  • 模糊查询时,如果仅仅是尾部模糊匹配,则不会失效,如果是头部模糊匹配,则失效
  • or连接的条件,当一边有索引,一边没有时,则失效,只有两边都有索引,才会成功
  • 如果mysql评估使用索引比全表更慢,则不使用索引

sql提示

 覆盖索引

查询使用的索引包含(或者说覆盖)所有需要查询字段的值,我们就称 之为“覆盖索引”。只需要查询索引就可以获取结果,不需要访问数据行。

注意:二级索引的叶子节点的值会包含主键,所以如果查询字段中出现了主键,则也认为包含在查询索引中

前缀索引

将长字符串的一部分前缀,建立索引,节省索引空间

  • 语法
create index idx_xxxx on table_name(column(n));
-- n为前缀长度
  • 前缀长度

  可以根据索引的选择性决定,选择性是指不重复的索引值和数据表记录总数的比值,索引值越高则查询效率越高

唯一索引的选择性为1

select count(distinct email) / count(*) from tb_user;
select count(distinct substring(email, 1, 10)) / count(*) from tb_user;

 

 

标签:index,存储,name,查询,索引,引擎,主键
From: https://www.cnblogs.com/WTSRUVF/p/17489438.html

相关文章

  • 图的存储--邻接表
    图的存储--邻接表邻接表表示法顶点:按编号顺序将顶点数据储存在一维数组中;关联同一顶点的边:用线性链表储存.头节点分为数据域和指针域.表节点:邻接点域:存放与vi邻接的顶点在表头数组中的位置.链域:指向下一条边或弧.还可以增加带权值的数据域info无向图的邻接表......
  • C# ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQL SERVER数据库,趋势曲线图,数据报
    C#ModbusRtu或者TCP协议上位机源码,包括存储,数据到SQLSERVER数据库,趋势曲线图,数据报表,实时和历史报警界面,有详细注释,需要哪个协议版本原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/655313350668.html......
  • 【Azure 存储服务】记一次调用Storage Blob API使用 SharedKey Authorization出现的40
    问题描述使用AzureStoragBlobRESTAPI上传文件,用SharedKey作为Authorization出现403错误。错误消息b'\xef\xbb\xbf<?xmlversion="1.0"encoding="utf-8"?><Error><Code>AuthenticationFailed</Code><Message>Serverfailedtoau......
  • MongoDB索引Index
    MongoDB索引Index索引概述索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对应用的性能是非常致命的创......
  • SpringBoot整合 Camunda 流程引擎
    目录1整合Camunda流程引擎1.1简介1.1.1概念介绍1.1.2组件介绍1.2Springboot集成1.2.1pom.xml1.2.2配置文件1.2.3数据库1.2.4登录界面1.3绘制流程图1.3.1下载安装1.3.2绘制1.3.2.1任务分类1.3.2.2网关1.3.2.3指定key1.3.3集成在idea中1.3.4引入项目测试1整合......
  • 小米,MiUI文字转语言没有首选引擎
    小米,MiUI文字转语言没有首选引擎,可以试着下载“小爱语音引擎”。链接:小爱语音引擎-小米应用商店(mi.com)微云:点击此处                            ......
  • 10 | MySQL为什么有时候会选错索引?
    以下内容出自《MySQL实战45讲》10|MySQL为什么有时候会选错索引?优化器的逻辑选择索引是优化器的工作。影响优化器选择的判断标准:扫描行数临时表是否排序扫描行数MySQL在真正执行语句之前,会根据统计信息来估算记录数。这个统计信息就是索引的“区分度“。显然,......
  • 架设传奇SF时提示此服务器满员,GEE引擎点开始游戏弹出服务器满员的解决方法
    之前一个朋友在架设GEE的传奇服务端时遇到一个奇怪的问题,就是在服务器外网架设时,建好角色点开始游戏提示此服务器满员,这个问题一般比较少见,而且出现的话一般都是GEE引擎的版本。他折腾了半天,一直没进游戏,我当时测试这个版本时并没有这个提示,当然我测试的是单机,于是远程连上服务器看......
  • 一文读懂火山引擎A/B测试的实验类型(3)——多链接实验
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群一.概述多链接实验,也称为Spliturl实验,用户根据分流结果访问不同版本的url。举个例子:当您有两个不同样式的落地页https://example.com/1.html和https://example.com/2.html,想要......
  • java联合索引(复合索引)的好处包括:
    联合索引(复合索引)的好处包括:支持多列查询:联合索引可以用于满足多个列的查询条件,避免了在多个单列索引之间的多次查找和合并。覆盖索引优化:如果联合索引包含了查询需要的所有列,即成为覆盖索引,可以避免回表操作,减少IO开销,提高查询性能。有序性优势:联合索引的顺序可以影响查询的性能。......