【发布时间】:2013-07-23 17:56:52
【问题描述】:
向表中添加主键(自动增量)以提高性能是否有用?此 ID 不会在查询中使用,但无论如何它可能对性能有用。
我的一个表没有主键/唯一/索引,并且工作非常缓慢。 那么是添加这样的 ID 更好,还是应该为一个主键创建 3 列(因为它们必须在一起才能唯一)?
【问题讨论】:
标签: mysql performance key
向表中添加主键(自动增量)以提高性能是否有用?此 ID 不会在查询中使用,但无论如何它可能对性能有用。
我的一个表没有主键/唯一/索引,并且工作非常缓慢。 那么是添加这样的 ID 更好,还是应该为一个主键创建 3 列(因为它们必须在一起才能唯一)?
【问题讨论】:
标签: mysql performance key
我喜欢总是有一个 ID 整数自动增量,因为您永远不知道何时需要从其他人那里引用此表或根据属性(例如 findById() 查找特定行。ID 整数自动增量列是非常适合它哈哈)
话虽如此,查询速度慢的问题取决于每个查询。看看你的 WHERE 子句。您是否通过这 3 列一起搜索是唯一的?然后在这 3 列之上添加一个索引(并使其唯一,因为它们一起是唯一的)。如果您的查询仅按一列搜索,请在其上添加索引。
【讨论】:
索引只会提高搜索被索引列的查询的性能。未使用的主键不会影响性能。
如果您的查询运行缓慢,请确保您在大量搜索的列上有索引(列不必是唯一的也可以有索引)。并使用EXPLAIN 来查看 MySQL 是如何优化查询的,以及它是否使用了这些索引。
如果您在使用特定查询时遇到问题,请提出一个新问题,在其中发布您的数据库架构和相关查询,我们或许可以为您提供帮助。
【讨论】:
有PK 很好,另外您可以在其他列上添加UNIQUE 索引以支持它们
【讨论】:
Limit 1 工作方式相同。