mysql - 如果我在表中的每一列上放置索引会发生什么

标签 mysql indexing

假设我有一个包含 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对此非常清楚(总而言之,在您将在 WHEREJOIN 和聚合函数中使用的列上使用索引)。

因此,在表中的所有列上创建索引本质上没有错,即使是 60 列。索引越多,插入速度越慢,一些更新将是因为 MySQL 必须创建键,但是如果您不创建索引,如果在比较和连接中仅使用非索引列,MySQL 必须扫描整个表。

我不得不说我很惊讶你会这样做

  1. 有一个包含 60 列的表
  2. JOINWHERE 子句中使用所有这些列,而不依赖于同一表中的任何其他列

...但这是一个单独的问题。

关于mysql - 如果我在表中的每一列上放置索引会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075377/

相关文章:

mysql - 如何使 updated_at 成为唯一的列更新而不是 created_at

sql - 用于提高 SQL Server 上多个连接性能的索引 View

sql-server - 创建索引时如何选择列?

postgresql - 我要在这个数据库上索引什么?

asp.net - 在 ASP.NET 中处理 DBNull 和 null

java - 以下查询导致 MySQLSyntaxErrorException - 我的查询有什么问题?

php - 通过 SSH 进行的 SQL 查询不起作用

php - SQL 从 PHP 插入奇怪的语法错误 MYSQL

indexing - MarkLogic 通用语言支持

seo - 有没有比站点地图更有效的方法来添加/强制重新抓取/删除您网站在谷歌中的索引条目?