Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 主要索引与次要索引:性能差异_Mysql_Database Performance_Database Indexes - Fatal编程技术网

Mysql 主要索引与次要索引:性能差异

Mysql 主要索引与次要索引:性能差异,mysql,database-performance,database-indexes,Mysql,Database Performance,Database Indexes,我有一个小问题:主要索引和次要索引之间的性能差异是什么?造成这种差异的原因是什么 我在谷歌上搜索,发现二级索引存储在另一个表中,所以这会降低所有操作的速度。。但是,还有其他一些原因可以证明这种性能下降的合理性 非常感谢聚集表是一个没有“堆”部分的B树-行直接存储在聚集索引(主键)的B树结构中。B-树的节点可以拆分或合并,因此物理位置或行可以更改,因此我们不能有从二级索引到行的简单“指针”,因此二级索引必须包含主索引字段的完整副本,以便能够可靠地标识行 Oracle、MS SQL Server和i

我有一个小问题:主要索引和次要索引之间的性能差异是什么?造成这种差异的原因是什么

我在谷歌上搜索,发现二级索引存储在另一个表中,所以这会降低所有操作的速度。。但是,还有其他一些原因可以证明这种性能下降的合理性


非常感谢

聚集表是一个没有“堆”部分的B树-行直接存储在聚集索引(主键)的B树结构中。B-树的节点可以拆分或合并,因此物理位置或行可以更改,因此我们不能有从二级索引到行的简单“指针”,因此二级索引必须包含主索引字段的完整副本,以便能够可靠地标识行

Oracle、MS SQL Server和is都是如此

这意味着聚集表中的二级索引比基于堆的表中的二级索引“更胖”,后者:

  • 降低了数据的聚集性
  • 降低缓存的有效性
  • 使它们的维护成本更高
  • 最重要的是,它会对查询性能产生影响:
    • 通过二级索引进行查询可能需要双重查找—一次通过二级索引查找以定位“键”数据,另一次通过主索引查找以定位行本身(据我所知,Oracle有一些有趣的优化以避免第二次查找,但InnoDB没有)
    • 另一方面,二级索引自然会包含更多字段,因此在传统的基于堆的索引需要表访问的情况下,可以完全避免第二次查找。但是,在基于堆的索引中也可以实现同样的效果,只需向其添加更多字段即可
让我引用一下:“索引组织的表和聚集索引的优点主要局限于不需要第二个索引的表。”


这很可惜,因为MySQL不允许您独立于存储引擎选择集群。

集群表是一个没有“堆”部分的B树-行直接存储在集群索引(主键)的B树结构中。B-树的节点可以拆分或合并,因此物理位置或行可以更改,因此我们不能有从二级索引到行的简单“指针”,因此二级索引必须包含主索引字段的完整副本,以便能够可靠地标识行

Oracle、MS SQL Server和is都是如此

这意味着聚集表中的二级索引比基于堆的表中的二级索引“更胖”,后者:

  • 降低了数据的聚集性
  • 降低缓存的有效性
  • 使它们的维护成本更高
  • 最重要的是,它会对查询性能产生影响:
    • 通过二级索引进行查询可能需要双重查找—一次通过二级索引查找以定位“键”数据,另一次通过主索引查找以定位行本身(据我所知,Oracle有一些有趣的优化以避免第二次查找,但InnoDB没有)
    • 另一方面,二级索引自然会包含更多字段,因此在传统的基于堆的索引需要表访问的情况下,可以完全避免第二次查找。但是,在基于堆的索引中也可以实现同样的效果,只需向其添加更多字段即可
让我引用一下:“索引组织的表和聚集索引的优点主要局限于不需要第二个索引的表。”


这很遗憾,因为MySQL不允许您独立于存储引擎选择集群。

以下链接可能会为您提供一些信息:,非常感谢!现在我将阅读它们。以下链接可能会为您提供一些信息:,非常感谢!现在我来读一下。这篇关于使用索引的文章。卢克!非常好。在聚类索引和二级索引方面澄清了很多想法。谢谢上的帖子使用索引。卢克!非常好。在聚类索引和二级索引方面澄清了很多想法。谢谢