gpt4 book ai didi

mysql - 两个具有相同行数的相同表上的相同索引是否会影响查找?

转载 作者:行者123 更新时间:2023-11-29 10:11:31 25 4
gpt4 key购买 nike

假设有两个表 table1table2,其中 table1 有 4 列,table2 有 10 列,但 table2 的前 4 列与 table1 相同。两个表中的第二列均表示 column2 已建立索引。通过索引搜索时,两个表的查找速度是否相同,或者列数较少的表(table1)的查找速度会更快吗?

最佳答案

当 where 子句如下所示时,通常使用索引查找:

where column2 = <some value>

在这种情况下,表中的列数——行的大小应该对性能几乎没有影响。这种查询的工作方式是使用索引来标识需要返回的行。此阶段的操作仅使用索引,并且仅包含列值和行 ID。

识别行后,引擎需要在数据页上查找它们。如果只有一行,那么记录的大小没有区别。仅查找该记录的数据页(好吧,也可能有一些先行读取,但这也是相同的)。

唯一的潜在差异是当多行符合条件时。行越小,它们位于单个数据页上的可能性就越大。但是,如果您的表格很大并且只选择了几行,那么它们很可能位于不同的页面上。

如果表大于可用内存并且您从表中检索大量行,则可能会出现一种罕见的情况。这称为抖动,并且更可能发生在较宽的行上(因为它们占用更多的空间)。

因此,行的大小基本上对相对性能没有影响,除了带回额外行(如果有)的开销之外。

关于mysql - 两个具有相同行数的相同表上的相同索引是否会影响查找?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50890413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com