假设我有一个包含 60 列的表,我需要对该表执行所有类型的查询,并且还需要将该表与其他表连接起来。而且我几乎使用所有行来搜索该表中的数据,包括其他表。该表就像数据库中的主表(如主键)。所以所有的表都与这个表有关。 通过考虑上述情况,我可以在表的每一列(60 列)上创建索引吗? , 这是好的做法吗?
单句:
Is it best practice to create index on each column in a table ? What might happens if I create index on each column in a table?
索引可能是“主键”、“唯一键”或“索引”
请评论,如果这个问题对你们来说不清楚,我会尝试改进这个问题。
最佳答案
MySQL's documentation对此非常清楚(总而言之,在您将在 WHERE
、JOIN
和聚合函数中使用的列上使用索引)。
因此,在表中的所有列上创建索引本质上没有错,即使是 60 列。索引越多,插入速度越慢,一些更新将是因为 MySQL 必须创建键,但是如果您不创建索引,如果在比较和连接中仅使用非索引列,MySQL 必须扫描整个表。
我不得不说我很惊讶你会这样做
- 有一个包含 60 列的表
- 在
JOIN
或WHERE
子句中使用所有这些列,而不依赖于同一表中的任何其他列
...但这是一个单独的问题。
关于mysql - 如果我在表中的每一列上放置索引会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075377/