【问题标题】:Table Primary Key for MySQL performanceMySQL 性能的表主键
【发布时间】:2013-07-23 17:56:52
【问题描述】:

向表中添加主键(自动增量)以提高性能是否有用?此 ID 不会在查询中使用,但无论如何它可能对性能有用。

我的一个表没有主键/唯一/索引,并且工作非常缓慢。 那么是添加这样的 ID 更好,还是应该为一个主键创建 3 列(因为它们必须在一起才能唯一)?

【问题讨论】:

    标签: mysql performance key


    【解决方案1】:

    我喜欢总是有一个 ID 整数自动增量,因为您永远不知道何时需要从其他人那里引用此表或根据属性(例如 findById() 查找特定行。ID 整数自动增量列是非常适合它哈哈)

    话虽如此,查询速度慢的问题取决于每个查询。看看你的 WHERE 子句。您是否通过这 3 列一起搜索是唯一的?然后在这 3 列之上添加一个索引(并使其唯一,因为它们一起是唯一的)。如果您的查询仅按一列搜索,请在其上添加索引。

    【讨论】:

      【解决方案2】:

      索引只会提高搜索被索引列的查询的性能。未使用的主键不会影响性能。

      如果您的查询运行缓慢,请确保您在大量搜索的列上有索引(列不必是唯一的也可以有索引)。并使用EXPLAIN 来查看 MySQL 是如何优化查询的,以及它是否使用了这些索引。

      如果您在使用特定查询时遇到问题,请提出一个新问题,在其中发布您的数据库架构和相关查询,我们或许可以为您提供帮助。

      【讨论】:

        【解决方案3】:

        PK 很好,另外您可以在其他列上添加UNIQUE 索引以支持它们

        【讨论】:

        • 所以最好有一个
        • 哇,UNIQUE 帮了很多忙:D 我的一个查询大约花了 7 秒,现在不到 0.1 秒。我什至不敢相信。
        • 这是因为当他找到一个 'UNIQE' 匹配项时,他会停止搜索。 Limit 1 工作方式相同。
        猜你喜欢
        • 1970-01-01
        • 2019-02-15
        • 2010-11-30
        • 2011-04-05
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多