MySQL:额外的id列与性能

时间:2011-11-12 19:17:25

标签: mysql performance unique-key

Table1有3列:id(自动增量),citynumber(唯一),description(varchar(1000))。 列ID永远不会在查询中使用。它只是用于我的方便(看看表如何增长,它更容易引用id,而不是citynumber,虽然在make sql查询时从不使用id。)

您是否强烈建议删除id列以提高性能?

6 个答案:

答案 0 :(得分:1)

删除id列不会提高性能,或者至少不会以合理的方式提升性能。您只能保存相同的磁盘。此外,PK可以给你带来的好处通常比节省空间更好。

答案 1 :(得分:1)

我知道这是有争议的,一般来说我认为最好的做法是在表上保留索引,即使它们是表格。只是我的意见是使用了没有索引的遗留代码和数据库表,以后需要它们。是的,这是一个次要的更新声明,但数据库仍需要相应地重新编制索引,这可能会影响此更新期间的性能。

只是我的意见。

答案 2 :(得分:0)

不,ID列几乎总是在那里。如果您要添加更多表并想加入它们,ID列将派上用场。它根本不应该影响性能,只有很小的空间消耗差异。

答案 3 :(得分:0)

性能取决于您的查询。如果citynumber确实是唯一的(这是一个自然键吗?)那么在该列上放一个索引将有助于大大增加你正在加入或过滤的内容。

答案 4 :(得分:0)

假设您只在数据库中存储真实(非虚构)城市,您可以轻松存储所有世界城市,而不必担心性能 - 数据集很小。

答案 5 :(得分:0)

在InnoDB中,PK比Unique索引工作得更快,因为PK指向数据,而Unique指向PK,仅在此之后指向数据。

因此,删除id,并将citynumber设为主键。

Stil,它不会给你太多的性能提升。