gpt4 book ai didi

MySQL INNODB 优化和索引

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:58 25 4
gpt4 key购买 nike

我正在设计一个 MySQL 数据库...

  1. 我有许多使用 UserID 作为主键的表。所有这些表的每个用户都有 1 行,因此将以相同的速度增长。看到它们将通过主键 (UserID) 访问,我认为没有必要索引到这个键,因为每个键都是唯一的。

  2. 我还会有一些表,这些表的主键是递增数字,而 UserID 是第二列。对于这些表,第二列中将有多个 UserID 实例。 (每个这个 UserID 都有很多 friend ,每个都列在不同的行中)。我预计这些表格会变得很长,但不会很宽,因此就 GB 而言不会很大。

问题:如果我在上面第 2 部分(UserID/第二列)中的表上添加索引,并且如果我的查询使用 UserID 进行连接(所有连接都离开 UserID),这是否意味着连接将访问更大的表(上面的第 2 部分)通过索引的 UserID,因此访问这些较大表的速度与第 1 部分中的较小表相似?

让所有将成为连接一部分的表使用 UserID 作为唯一的主键(较短的表)或索引列(较大的表)——这在确保良好的响应时间方面是否是合理的设计,如果表会变得相当大——曾经达到 1 亿行吗? (不包括硬件等其他要求)。

想法?谢谢

最佳答案

主键字段自动成为唯一索引的一部分,因此无需在其上添加另一个索引。

将索引放在 where 中使用的任何字段上是一个很好的经验法则。 , join , 和/或 order by条款。

在速度方面,没有人能确定添加(或删除)索引是否会提高性能。对于简单/小型数据库,索引总是一个主要的加速。对于大型/复杂的模式,它们实际上会在某些情况下损害性能。您必须对系统进行基准测试以确保。但总的来说,索引 = 好。

关于MySQL INNODB 优化和索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14128845/

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