[MySQL]2-MySQL索引

二级索引详解 二级索引(Secondary Index)是数据库系统中除主键索引外的附加索引结构,用于加速基于非主键列的查询操作。 阅读详情

摘要:MySQL索引的说明,索引是什么样的结构,索引匹配原则,索引的创建,索引的碎片问题与问题解决,执行计划的使用,已经MySQL8索引发生的变化等。

目录

1.索引🌟

1.1索引结构

B树

B+树

聚簇索引(一级索引)与非聚簇索引(二级索引)

回表操作

1.2索引碎片

清理索引碎片的方法

1.3索引匹配方式🌟

在数据列上使用函数或者计算会导致索引失效的原因

匹配列前缀

前缀索引创建

全值匹配

索引覆盖

最左匹配原则

匹配范围值

精确匹配某一列而范围匹配另外一列

1.4全文索引

1.5创建索引🌟

慎重建立索引

为长字符串建立前缀索引

联合索引的顺序

1.6索引优化🌟

建立索引

调整索引

删除未使用索引

调整选择性比较低的索引

谨慎使用索引统计

减少碎片

1.7索引创建原则

2.EXPLAIN

2.1explain output 执行计划输出解释

2.2概括

2.3重点🌟

type列(连接类型,判断索引使用情况)

extra (额外信息,看SQL执行情况)

2.4MySQL执行优化

is null优化

Optimizing Subqueries with Materialization物化优化子查询

Index Merge索引合并优化

order by优化

gorup by优化

索引下推ICP 优化

3.MySQL8索引更新与说明

3.1支持降序索引 Descending Indexes

3.2函数索引

实现原理

适用场景

3.3不可见索引(Invisible Indexes)

3.4多值索引(Multi-Valued Indexes)

资料引用

1.索引🌟

排好序的用于快速查找数据结构。理解索引是如何工作的非常重要,应该根据理解来创建合适的索引,而不是根据“在多列索引中将选择性最高的列放在第一列”这样的经验法则。

1.1索引结构

MySQL索引接口从B树-->B+树。

机械硬盘数据读取:从磁盘的磁片的磁道中获取数据。

B树

缺点:

范围查询力不从心;

查询效率不稳定,距离根节点越近越快;

树高度有下降空间。

B+树

MySQL B+Tree结构,节点为16KB的页,2000w的数据一般也只需要3层就可以了。

非叶子节点的16KB页只保留索引列信息、下一页地址信息;

将所有数据存储在底层的叶子节点16KB页,从而保证每次查询都到叶子节点,效率稳定;

叶子节点从小到大排序,很好范围查询。

聚簇索引(一级索引)与非聚簇索引(二级索引)

聚簇索引的非叶子节点,记录的是行的key——主键key或者Unionkey创建,或者隐藏的row_id

叶子节点记录行数据

非聚簇索引的非叶子节点,记录索引值

叶子节点,记录聚簇索引的key

补充:MySQL唯一限制和主键限制都是通过索引实现的

回表操作

二级索引树查询完返回一级索引树获取叶子节点行数据,这个操作就叫回表。

1.2索引碎片

频繁插入、更新、删除操作会导致索引页中数据分布不连续,形成未使用的空间或数据块。这种情况会导致查询性能下降,因为需要更多次的磁盘IO来访问数据。

清理索引碎片的方法

使用optimize table table_bame语句,来重新组织表中的数据和索引。

也可以重新建表,或者第三方工具。

建议定期检查并清理索引碎片。优化表是一个耗费资源的操作,需要选择合适的时间窗口执行。

1.3索引匹配方式🌟

B树(B+树)索引主要用于精确匹配和范围查询。

索引减少了服务器需要扫描的数据量、避免排序和临时表、将随机IO变成顺序IO,大大提升了SQL执行效率。

但不符合匹配方式就容易出现索引失效的情况。

在数据列上使用函数或者计算会导致索引失效的原因

匹配列前缀

可以匹配某一列的值的开头部分,比如使用LIKE 'prefix%'来进行搜索。这种情况下,只要前缀是固定的,就可以用到索引。

前缀索引创建

在为长字符串列创建前缀索引时,前缀索引的长度最好具备良好的选择性。详情见1.5创建索引-为长字符串建立前缀索引

全值匹配

查询条件完全匹配索引

索引覆盖

一个查询所需要的所有数据都可以从索引中获得,而无需访问实际的数据行。

最左匹配原则

使用联合索引时,第一个条件列需要匹配索引列。

且设计联合索引时,应该将选择性高的列放在左边,即列的值范围大的(比较分散的)放在左边。即按照选择性高低进行排列。

order by适合组合索引。

值得注意的是:尽管联合索引依据最左匹配原则可以给最左列左索引,但是最左列的单列索引效率更高。

匹配范围值

可以查找某一个范围的数据,例如>

注意:使用IN操作符可以被视为多个等值比较的组合,可以有效使用索引,且后续索引列不会失效。

精确匹配某一列而范围匹配另外一列

可以在查询第一列的全部的同时对第二列进行范围匹配。

BETWEEN 本身不会导致索引失效,但是BETWEEN 让自己这列用了索引,但会截断它后面的组合索引列。

1.4全文索引

CHAR、VARCHAR、TEXT类型可以创建有别于B树和哈希索引的全文索引。

全文索引允许用户对存储在数据库中的大块文本数据进行快速查找。它可以处理整本书、文章或任何其他形式的大段文字,并能根据需要获取其中的章节、段落、句子或单词等信息。这种类型的索引通常通过倒排索引来实现,即记录了每个单词出现在文档集合中的位置信息。

补充:现在使用Elasticsearch的比较多。

1.5创建索引🌟

解释:

1、主键会自动建立唯一索引,主键索引有唯一性,不要重复建立索引。

2、频繁更新、删除的列建立索引性能比较低,因为会经常变更索引树,insert语句会变慢,且经常删除会导致索引碎片,进而导致查询效率降低。

3、不要建立未使用的索引,因为每个增加的索引都会占据索引空间,增加存储成本,insert和update操作都需要维护索引树,效率会变低。

4、组合索引最左匹配原则可以视作最左列也有索引,但是性能比不上单列索引,因为索引更大,磁盘的IO操作更多,按需加载在缓存中占据的内存也更大。

5、接住索引本身的顺序完成排序

慎重建立索引

1、表记录很少,经常增删改的数据表需要谨慎创建索引。

2、建议单表不要超过五个索引。

表中的索引越多,插入数据就越慢

3、因为非聚簇索引依赖聚簇索引,如果选定的主键索引较大,其他的索引也会很大。当表中索引较多的时候,主键应当尽量小。

4、经历不要建立重复索引

为长字符串建立前缀索引

字符串类型的列的包含整个列值的索引太大了,影响性能并消耗大量磁盘空间。通常选择索引列前N个字符建立前缀索引。

前缀索引需要计算完整列的选择性以确认长度,这个长度需要让在这个长度下的数据分布的很均匀。

需要注意的是:前缀索引无法order by与group by以及覆盖扫描。

联合索引的顺序

设计联合索引时,应该将选择性高的列放在左边,即列的值范围大的(比较分散的)放在左边。即按照选择性高低进行排列。

1.6索引优化🌟

建立索引

建立合适索引,并匹配索引。

调整索引

用扫描出SQL语句,然后重新分配建立合适索引列(选择性高的列)。

合适索引数量,比如创建联合索引、适当冗余索引。

删除未使用索引

-- 查找没使用过的索引

select * from sys.schema_unused_indexes;

调整选择性比较低的索引

使用语句会给MySQL带来额外压力,注意使用时间。

基于INFORMATION_SCHEMA表可以查询选择性比较低的索引,或者和前缀匹配一样,做一个统计。

谨慎使用索引统计

InnoDB引擎时,使用SHOW TABLE STATUS 和 SHOW INDEX,会出发统计信息的更新,给服务器带来IO压力,

减少碎片

optimize table_name;可以整理索引空间碎片

不支持的optimize的可以使用不做任何操作的alter操作重建表

数据碎片有三种类型,比索引更复杂

行碎片:

数据行被存储在多个地方的多个片段中,即使查询只从索引中访问一行记录,行碎片也会导致性能下降。

1.7索引创建原则

2.EXPLAIN

2.1explain output 执行计划输出解释

https://dev.mysql.com/doc/refman/5.7/en/

https://dev.mysql.com/doc/refman/5.7/en/explain.html

https://dev.mysql.com/doc/refman/5.7/en/explain-output.html

官方解释是:EXPLAIN语句提供MySQL如何执行语句的信息。

可以查看应在哪些表添加索引以通过索引查找行来加快语句执行速度;

检查是否以最佳顺序连接表(如对SQL有理解,用户可以使用 SELECT STRAIGHT_JOIN指定连接顺序)。

2.2概括

explain output columns

列名

json name

使用format=json时输出中显示的效属性名称

meaning含义

详细解释

id

select_id

The

SELECT

identifier

select标识符

这是查询中 SELECT 的顺序号。

id 号每个号码,表示一趟独立的查询 , 一个 sql 的查询趟数越少越好

如果该行引用其他行的并集结果,则值可以是 NULL 。在这种情况下, table 列显示一个类似于 的值,以指示该行引用具有 id 的 M 和 N 值的行并集。

可以查看执行顺序。

多表联查,id值越大,表查询越先执行。

id值相同,看输出顺序

select_type

None

  

无

The

SELECT

type

  

SELECT

类型

查询类型,说明单表查询、关联查询、子查询等信息

table

table_name

The table for the output row

输出行所引用的表

表名。

explain输出的每条记录都对应着都某个单表的访问方法。

M,N>该行指的是具有 M 和 N 的 id 值的行的并集

N>指的是具有 id 值为 N 的行的派生表结果。例如,派生表可能由 FROM 子句中的子查询生成

N>指的是具有 id 值为 N 的行的物化子查询的结果

partitions

partitions

The matching partitions

  

匹配分区

显示分区,对于非分区表值为null

type

access_type

The join type

  

连接类型

https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-join-types

描述了如何连接表。以下连接类型按照最好到最差排列:

system 该表只有一行(=系统表)。const连接类型的特殊情况

const 该表最多一行匹配,该行在查询开始时读取。因为只有一行,所以该行中列的值可以被优化器其余部分视为常数。const 表非常快,因为它们只读取一次。

eq_ref当索引的所有部分都被连接使用且索引是 PRIMARY KEY 或 UNIQUE NOT NULL 索引时,使用此类型。

通常发生在连表查询中,关联的条件是某一张表的主键或者UNIQUE唯一非空索引。

ref ref 可用于使用 = 或 操作符比较的索引列。如果连接不能根据键值选择单行,则使用 ref 。

满足索引最左匹配原则,且不走主键或者唯一非空索引则为ref,非聚簇索引查询一般都为ref。

fulltext 使用fulltext索引进行连接操作

ref_or_null 类似于 ref ,但增加了 MySQL 对包含 NULL 值的行的额外搜索。这种连接类型优化最常用于解决子查询。

在ref基础上增加null值查询则为这个。

index_merge 此连接类型表示使用了索引合并优化。

一般是单表多个索引条件的查询,将多个搜索结果合并为一个,统一回表降低查询代价。

unique_subquery这种类型替换了以下形式的某些 IN 子查询中的 eq_ref。unique_subquery 是一个索引查找函数,它完全替换子查询以提高效率。

index_subquery

此连接类型类似于 unique_subquery 。它替换 IN 子查询,但适用于以下形式的子查询中的非唯一索引:

range 仅检索给定范围内的行,使用索引选择行. key_len 包含使用的最长键部分。 ref 列是针对此类型的 NULL

当键列使用任何 = 、 <> 、 > 、 >= 、 < 、 、 BETWEEN 、 LIKE 或 IN() 运算符与常量进行比较时,可以使用 range

index index 连接类型与 ALL类似,扫描索引树

ALL 全表扫描,尽量避免

possible_keys

possible_keys

The possible indexes to choose

可能的索引选择

表示 MySQL 可以从其中选择以查找此表中行的索引

key

key

The index actually chosen

实际选择的索引

表示 MySQL 实际决定使用的键(索引)。如果 MySQL 决定使用 possible_keys 索引之一来查找行,则该索引被列为键值。

key_len

key_length

The length of the chosen key

所选索引的长度

表示 MySQL 决定使用的键的长度(即:字节数)。 帮你检查`是否充分的利用上了索引`,`值越大越好`,主要针对于联合索引,有一定的参考意义。

ref

ref

The columns compared to the index

列与索引的比较

当使用索引列等值查询时,与索引列进行等值匹配的对象信息

rows

rows

Estimate of rows to be examined

估计要检查的行数

表示 MySQL 认为必须检查的行数以执行查询。对于 InnoDB 表,这个数字是一个估计值,可能并不总是准确。

值越小越好

filtered

filtered

Percentage of rows filtered by table condition

行过滤比例

表示由表条件过滤的表行估计百分比

Extra

None

  

无

Additional information

  

附加信息

https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-extra-information

查询type为const时为null

distinct MySQL 正在寻找不同的值,因此它在找到第一个匹配的行之后,就会停止为当前行组合搜索更多行。

Full scan on NULL key这发生在子查询优化中,作为当优化器无法使用索引查找访问方法时的后备策略。

Impossible HAVING HAVING 子句始终为假,无法选择任何行。

Impossible WHERE

WHERE 子句始终为假,无法选择任何行。

Using filesortMySQL 必须进行额外遍历来确定如何以排序顺序检索行。排序是通过遍历所有行(根据连接类型)并存储所有匹配 WHERE 子句的行的排序键和行指针来完成的。然后对这些键进行排序,并按排序顺序检索行。请参阅第 8.2.1.14 节,“ORDER BY 优化”。

using index 该列信息仅通过索引树中的信息从表中检索,无需额外查找实际行。当查询仅使用单个索引中的列时,可以使用此策略。

using index condition 表通过访问索引元组并首先测试它们来确定是否读取完整的表行。这样,索引信息被用来延迟(“推下”)读取完整的表行,除非这是必要的。

Using index for group-by 与 Using index 表访问方法类似, Using index for group-by 表示 MySQL 找到一个可以用来检索 GROUP BY 或 DISTINCT 查询的所有列的索引,而无需对实际表进行任何额外的磁盘访问

Using MRR使用多范围读取优化策略读取

Using temporary为了解决查询,MySQL 需要创建一个临时表来存储结果。这通常发生在查询包含 GROUP BY 和 ORDER BY 子句,这些子句以不同的方式列出列时。

Using where 一个 WHERE 子句用于限制与下一个表匹配的行或发送给客户端的行。除非你明确打算检索或检查表中的所有行,否则如果 Extra 值不是 Using where ,并且表连接类型是 ALL 或 index ,你的查询可能有问题。

2.3重点🌟

type列(连接类型,判断索引使用情况)

结果值从最好到最坏依次是: system > const > eq_ref> ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL

SQL 性能优化的目标:至少要达到 range 级别,要求是 ref 级别,最好是 consts级别。

range效率不高

index和all都是全表扫描

extra (额外信息,看SQL执行情况)

using index 覆盖索引 查询的数据都有索引

using index condition 索引下推

using where 所有过滤动作都由server层处理,没有索引(需要优化)

using MRR

using join buffer (BAK|BNL)

using union(indexs) 使用联合索引,多个查询条件都是索引列会发生索引合并

usring temporaray 使用了临时表,尽量使用索引,而非临时表,例如group by、union、distnct语句会使用到临时表

using filesort 通常出现在order by语句,查询之后需要额外进行排序。可以将条件与排序字段组成联合索引,由于有联合索引,排序字段本身就是有序的,不需要额外排序。

总结:避免临时表,尽量覆盖索引,像排序和函数什么的尽量避免

rows * filtered

rows列与filtered列通常与type列一起来看。

通常希望 rows * filtered的值越小越好,rows尽量小,filtered尽量高。

只要rows小就是好

rows:越小说明需要检查的行越少,即扫描的越少,语句越精准

filtered:越大说明扫描的行都被保留了,说明效率很高。

两者的值越小,说明性能越高。

异常情况:rows大,filtered低,说明有过滤,但是初始扫描行数多了,需要优化索引,联合索引最左侧选择性不高就可能出现这个问题。

2.4MySQL执行优化

is null优化

MySQL 可以对 col_name IS NULL 执行与用于 col_name = constant_value 相同的优化。

is null或者 null都会进行优化

注意:Oracle不会对NULL进行索引

Optimizing Subqueries with Materialization物化优化子查询

物化通过将子查询结果作为临时表(通常在内存中)生成来加速查询执行。MySQL 第一次需要子查询结果时,会将该结果物化到临时表中。任何后续需要该结果时,MySQL 都会再次引用临时表。优化器可能会使用哈希索引来对表进行索引,以使查找快速且成本低。索引包含唯一值,以消除重复并使表更小。

Index Merge索引合并优化

索引合并访问方法通过多次 range 扫描检索行,并将结果合并为一个。此访问方法仅合并单个表中的索引扫描,而不是跨多个表的扫描。合并可以产生其底层扫描的并集、交集或交集的并集。

如果您的查询包含复杂的 WHERE 子句,并且具有深层 AND / OR 嵌套,并且 MySQL 没有选择最佳计划,请尝试使用以下恒等变换来分配术语

(x AND y) OR z => (x OR z) AND (y OR z)

(x OR y) AND z => (x AND z) OR (y AND z)

order by优化

gorup by优化

满足 GROUP BY 子句的最通用方法是扫描整个表,创建一个新临时表,其中每个组的所有行都是连续的,然后使用这个临时表来发现组和应用聚合函数(如果有)。在某些情况下,MySQL 能够做得更好,通过使用索引访问来避免创建临时表。

索引下推ICP 优化

在传统的查询执行过程中,数据库系统首先根据索引找到可能符合条件的记录位置,然后将这些记录加载到内存中,最后在内存中应用WHERE子句的过滤条件。

而索引下推技术则是在索引扫描阶段就应用部分或全部的WHERE子句条件,直接在索引层面上过滤数据,只将真正符合条件的记录加载到内存中。即讲过滤逻辑下推到‘存储引擎’进行,整理好后发给server层,减少交互次数。

ICP 可以减少存储引擎必须访问基本表的次数以及 MySQL 服务器必须访问存储引擎的次数。

3.MySQL8索引更新与说明

3.1支持降序索引 Descending Indexes

MySQL5.7版本只支持升序索引,降序查询需要filesort,从8.0开始,支持降序索引。

3.2函数索引

MySQL从 8.0.13 开始支持为表达式建立索引,称为函数索引(Functional Indexes)。

可以对表达式或函数的结果创建索引,而非仅限于列的原始值。

实现原理

函数索引底层通过"隐藏的虚拟生成"列实现。当创建索引时,MySQL 自动生成一个不可见的虚拟列,存储表达式的结果,并在此列上建索引。当创建索引时,MySQL 自动生成一个不可见的虚拟列,存储表达式的结果,并在此列上建索引。

适用场景

查询中常用表达式(如 UPPER(col)、SUBSTRING(col, 1, 3))

JSON 字段提取(如 JSON_EXTRACT(doc, '$.key'))

3.3不可见索引(Invisible Indexes)

MySQL8可将索引标记为不可见(如 CREATE INDEX idx_col ON table(col) INVISIBLE),优化器忽略之,用于测试索引效果。

3.4多值索引(Multi-Valued Indexes)

MySQL8支持 JSON 数组的多值索引(如 CREATE INDEX idx_array ON table((CAST(json_col->>'$.array' AS UNSIGNED ARRAY))))。用以提升JSON数据查询效率

资料引用

B站《猿人林克》MySQL系列
CSDN用户《贝尔摩德苦艾酒》MySQL栏目
书籍《高性能MySQL》
MySQL官网

技术美术个人笔记(十六)——Houdini到UE的大地形 文章目录关于地形白模制作关于PDG流程 关于地形白模制作 用heightfield noise和笔刷刷出合适的mask做山形叠加: 用remap可快捷反转mask ,用来做平原地区的小型丘陵: 接着用clip切平最低处,用distort制造侵蚀等,对部分地区用笔刷进行微调拓宽峡谷: 用经过sweep打平的曲线以及裁切的各种多面体用heightfield_project投影制作河道和水池,用blur mask并remap的方法拓宽河道 用distort、erode制造合适的弯曲和侵蚀,同理可挖出月牙形 阅读详情

相关推荐

sentaurus学习笔记(VDMOS仿真)(三)

在Sentaurus中,这通常意味着在2D仿真中,x轴指向下,y轴指向右。定义了在2D模拟中,网格尺寸按照一定的增长率进行扩展,这里的增长率为2.0,意味着远离最小尺寸区域的网格单元大小将是最小尺寸的两倍。定义了2D模拟中网格单元的最小尺寸为0.001微米,这有助于控制网格的最小大小,从而影响仿真的精度和计算成本。表示启用中等级别的日志信息输出,这有助于用户了解仿真过程中发生的事件和可能的问题。表示启用保存调试文件,这可以帮助用户在仿真过程中检查和验证模型的状态。这行代码设置了仿真过程中使用的线程数。

qq_52640792的博客 1800

Mysql5.7及8.0版本索引失效情况汇总

本文针对MySQL8.0及5.7版本常见的索引失效问题进行详细总结,全部亲测,附带SQL脚本。

我的博客 4768

sldd数据字典导出为excel

sldd导出为excel

zpfjf的博客 2229

Mysql索引优化

主键索引是一种特殊的唯一索引,用于唯一标识表中的每一行数据。每个表最多有一个主键索引,且索引列不允许为。

m0_74186706的博客 1337

面向多目标跟踪的数据关联方法研究综述

摘要:多目标跟踪技术在军事和民用领域具有广泛应用,其核心挑战在于数据关联问题。本文系统梳理了数据关联的主要解决方法,首次将经典算法分为确定性关联和概率性关联两大类。确定性关联(如NNDA、GNN、MHT)采用"硬分配"策略,计算效率高但易受噪声干扰;概率性关联(如PDA、JPDA、PMHT)通过"软分配"处理不确定性,更适合复杂场景。文章详细分析了各类算法的原理、适用条件和优缺点,并探讨了智能学习等新兴技术在视觉跟踪等领域的应用。研究指出,尽管随机集滤波等新方法出现,

qq_43416206的博客 1133

BambuStudio学习笔记:GCode 类

关键成员解析 核心配置组件 状态跟踪系统 功能模块集成 核心方法剖析 主输出管道 实现多阶段处理: 分层处理流程: 实现智能路径规划: 关键特性: 实现模板故障检测: 采用三级流水线: 支持扩展类型: 实现多通道输出: 采用: 实现: 支持: 支持模块化编译: 典型流程: 实现功能:

zzzkk2009的专栏 916

联合索引 && 覆盖索引 && 最左前缀原则 && 索引下推 && 回表

数据库索引核心概念解析:1)联合索引在多个列上建立B+树结构,按列顺序存储键值;2)覆盖索引可直接提供查询数据,避免回表操作;3)最左前缀原则要求查询必须从索引左侧列开始使用;4)索引下推在存储引擎层提前过滤数据,减少回表次数;5)回表是通过二级索引查找主键后访问聚簇索引的过程。这些技术相互关联(联合索引是基础,覆盖索引和索引下推可减少回表),合理设计索引(高频列靠左、包含查询字段)能显著提升查询性能。

csdn_tom_168的博客 379

FFmpeg音频转AAC/M4A终极指南:从基础到高级参数调优

本文详细介绍了使用FFmpeg将音频转换为AAC/M4A格式的完整指南,从基础安装到高级参数调优。涵盖FDK-AAC编码器的使用、VBR/CBR模式选择、音质控制技巧以及实战案例,帮助用户在不同场景下实现高质量的音频转换。特别适合需要优化音频文件大小与音质平衡的开发者和音频处理专业人士。

rust6ferris的博客 719

索引什么时候会失效?

因为联合索引的B+树的排序规则是,先按照最左的第一列的字段排序,第一列数据相同时,才会按照第二列的字段排序。所以,为了尽可能地使用到联合索引中更多的列,我们where条件中的列必须是从联合索引中最左边的列开始连续的列(当然,其实有查询优化器的存在,只要最左边的列存在,则会走索引,至于使用到多少个字段,就要看where条件中是否包含其它列了)当我们再添加一个age字段,不过age字段没有建立索引,这个时候因为不满足最左匹配原则并且查询的字段并不都包含在二级索引当中,这个时候就会走全表扫描。

weixin_51299539的博客 166

自旋玻璃(spin glass)、自旋冰(spin ice)和量子自旋液体(quantum spin liquid)(之二)

具有相同电荷的电子相互排斥。结果,为了在极其拥挤的环境中相互超越,他们不得不改变自己的行为。剑桥大学和英国伯明翰大学于 2009 年 7 月发表的研究表明,电子可以通过量子隧穿从金属表面跳到相近位置的量子线上,这样做后,将分离成两个准粒子,命名为的自旋子和全子。Van den Brink、Khomskii 和 Sawatzky 在 1997-1998 年对轨道子进行了理论上的预测。在 2011 年 9 月发给出版商的论文中报告了它作为一个单独的准粒子的实验观察结果。

qq_32515081的博客 1万+

使用模拟工具Modbus poll 和PLC 通讯

使用模拟工具Modbus poll 和PLC 通讯 简介 Modbus Poll 是一个模拟Modbus 主站的工具。不用在现场调试,在家也能使用,方便快捷的调试验证程序。使用它可以和PLC进行Modbus TCP /RTU 通讯等功能,接下来为大家介绍使用Modbus Poll 和 PLC 进行 Modbus TCP 通讯。 组态PLC PLC作为我们的从站和Modbus Poll 通讯,那我们组态一个PLC。 创建通信DB 创建一个DB块,在数据类型处输入:TCON_IP_V4

weixin_61398412的博客 1万+

MySQL倒序索引测试2

测试环境 MySQL Community Server 8.0.17 准备测试数据 DROP TABLE TB001; CREATE TABLE TB001(ID INT PRIMARY KEY AUTO_INCREMENT,C1 INT); INSERT INTO TB001(C1) SELECT 1 FROM information_schema.col...

weixin_30565199的博客 1078

DFT ATPG提升coverage的方法

采用更精确的故障模型,如桥接故障模型(用于描述电路中不应连接的节点之间的短路故障)和路径延迟故障模型(考虑信号在电路路径上的传输延迟),可以使ATPG工具生成更有效的测试向量来覆盖这些特殊故障。假设电路中有一个与门的输入引脚存在固定为0的故障(stuck - at - 0),D - 算法会分析与门的其他输入以及与门输出连接的后续电路逻辑,从而确定整个电路的输入值,使得当该故障存在时,电路的输出与无故障时不同。通过增加测试向量的类型,如功能测试向量和结构测试向量的结合,可以提高故障覆盖率。

Loving_enjoy的博客 955

mysql单表2千万数据如何添加索引

在MySQL中对包含大量数据的表(如2千万条记录)直接添加索引确实可能会导致操作非常缓慢,甚至导致数据库服务变得不可用。

得塔云的博客 779

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

MySQL学习[2] ——MySQL索引

通过将多个字段组合成一个索引,这个索引就叫做联合索引。联合索引的非叶子节点用两个字段的值作为 B+Tree 的 key 值。当在联合索引查询数据时,先按 product_no 字段比较,在 product_no 相同的情况下再按 name 字段比较。这是**最左匹配原则,按照最左优先的方式进行索引的匹配。在使用联合索引进行查询的时候,如果不遵循「最左匹配原则」,联合索引会失效**,这样就无法利用到索引快速查询的特性了。

shenfenxihuan的博客 5172

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

2、MySQL索引

从数据结构角度可分为B+树索引、哈希索引、以及FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)和R-Tree索引(用于对GIS数据类型创建SPATIAL索引);从物理存储角度可分为聚集索引、非聚集索引;从逻辑角度可分为主键索引、普通索引,或者单列索引、多列索引、唯一索引、非唯一 索引等等。

sproutBoy的博客 957

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

mysql 索引 二_2、MySQL索引

一、索引介绍索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引优化应该是对查询性能优化最有效的手段了。索引能够轻易将查询性能提高好几个数量级。二、为啥要使用索引如上图,是MySQL中一张表T的2列数据,现在要找...

weixin_34275305的博客 88

MySQL索引2——索引的类型以及索引的创建

按照B+Tree存储形式方式分类聚集索引和二级索引(两种索引的存储格式)按照索引的特征进行分类主键索引、唯一索引、常规索引、全文索引、空间索引其中主键索引、唯一索引、常规索引都为B+Tree索引结构全文索引为Full-Text索引结构空间索引为R-Tree索引结构按照单个索引的字段个数分类单列索引和联合索引对于索引的优化又有两种索引前缀索引和覆盖索引在讲解索引的具体类型之前我们先了解一下索引的相关知识什么是回表查询。

m0_49864110的博客 1078

2-2 mysql 索引

索引定义 索引分类 单列索引 2. 唯一索引 3. 主键索引

langkeyring的博客 687

2.索引:MySQL 索引分类

索引的具体类型主要分为以下几类:主键索引、唯一索引、常规索引、全文索引。分类含义特点关键字主键索引针对于表中主键创建的索引默认自动创建,只能有一个PRIMARY唯一索引避免同一个表中某数据列中的值重复可以有多个UNIQUE常规索引快速定位特定数据可以有多个全文索引全文索引查找的是文本中的关键词,而不是比较索引中的值可以有多个FULLTEXT分类含义特点聚集索引 (Clustered Index)将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据。

m0_72560900的博客 1496

Mysql索引2

但是 UUID 不是递增的,MySQL 中索引的数据结构是 B+Tree,这种数据结构的特点是索引树上的节点的数据是有序的,而如果使用 UUID 作为主键,那么每次插入数据时,因为无法保证每次产生的 UUID 有序,所以就会出现新的 UUID 需要插入到索引树的中间去,这样可能会频繁地导致页分裂,使性能下降。另外字符串越长,占用的内存越大,由于页的大小是固定的,这样一个页上能存放的关键字数量就会越少,这样最终就会导致索引树的高度越大,在索引搜索的时候,发生的磁盘 IO 次数越多,性能越差。

wjcurry的博客 749

【MYSQL索引】2 索引创建原则

① 冗余索引举例:建表语句如下我们知道,通过 idx_name_birthday_phone_number 索引就可以对 name 列进行快速搜索,再创建一个专门针对 name 列的索引就算是一个 冗余索引 ,维护这个索引只会增加维护的成本,并不会对搜索有什么好处。② 重复索引col2 INT,我们看到,col1 既是主键、又给它定义为一个唯一索引,还给它定义了一个普通索引,可是主键本身就会生成聚簇索引,所以定义的唯一索引和普通索引是重复的,这种情况要避免。

ChanceZhou的博客 1051

mysql学习之2——mysql索引

一、从索引方法(或索引算法)角度看 mysql中主要有四种类型的索引,分别为:B-Tree 索引,Hash 索引,Full-text 索引和 R-Tree 索引,下面针对这四种索引的基本实现方式及存储结构做一个大概的分析。 二、聚集索引和非聚集索引 聚集索引中键值的逻辑顺序决定了表中相应行的物理顺序。   聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和

莫失莫忘-云姐 1581

MySQL的索引总结2

InnoDB中的索引 聚集索引(主键索引) 每个表只有一个主键索引(B +数结构),叶子节点同时保存了主键的值也保存了数据记录,其它节点只存储主键的值。 非聚集索引(辅助索引) 每个表可以有多个 b+树结构,叶⼦节点保存了索引字段的值以及主键的 值,其他节点只存储索引指端的值。 MyISAM中的索引 MyISAM中使用的是非聚簇索引。 ...

joeyin 185

【MySQL】-14 MySQL索引(上篇MySQL索引类型前置-2-高性能的索引策略)

MySQL索引-高性能的索引策略

yinying293的博客 1471

MySql索引——索引的结构2

索引的分类、优缺点、相关概念

Alex_cf的博客 859
上一篇: [MySQL]1-MySQL结构与运行原理
下一篇: [MySQL]3-MySQL查询性能优化
tataCrayon|啾啾
博客等级 码龄7年 2122粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tataCrayon|啾啾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值