在 SQL 索引上:有多少不同的值太多了?与 SELECT 无关的索引数量 - 仅 table?

On SQL indexes: how many distinct values are too many? number of indexes irrelevant for SELECT-only table?

我是 SQL 新手,但这是我目前收集到的关于索引的信息:

  1. 在具有太多不同值的列上建立索引可能会适得其反,因为它会花费更长的时间遍历索引并一次检索几条记录,而不是直接从 table.

  2. 除了(1)等病态情况,索引总是以较慢的 INSERT、UPDATE 等为代价提高 SELECT 语句的速度

我的问题是:

  1. 情况可能恰恰相反。具有很少不同值的列不是索引的良好候选者。通常,优化器会评估使用索引的成本与完整扫描的成本。然后优化器会选择成本最低的访问

  2. 如果你从来没有更新过 table,那么索引应该不是真正的惩罚,也许磁盘 space 除外。但是,仅仅因为索引存在,并不一定意味着它会被使用;按照上面的 1.