0

为表中的同一列设置多个索引是一种好习惯吗?

例如。有表A与列 col1,col2,col3,col4,col5,col6

索引

  1. Index1在 (col1,col2,col3)
  2. Index2在 (col4,col2,col6)
  3. Index3在 (col2,col1,col3,col4,col5)

在这种情况下col1,col2,col3,是表 A 的多个索引的一部分。将每一列都包含在其中还不够single index吗?

有什么same columnmultiple index。请说清楚。

4

1 回答 1

0

这取决于;)

在很多情况下,拥有多个包含同一列的索引非常有用。

另请参阅 Ask Tom 中的这篇文章: 索引中的列顺序

索引是否有帮助在很大程度上取决于您的数据和查询。尤其是查询返回的记录百分比很重要。

下面的示例稍微简化了一点,但总的来说系统是这样工作的:

想象一下,您的数据库在每个数据库块上存储 10 条记录,而您的查询必须返回所有记录的 10%。在这种情况下,必须返回每 10 条记录。在最坏的情况下,您必须读取每个数据库块(全表扫描)。在这种情况下,索引会减慢查询速度,因为您必须另外读取索引。

何时使用索引有不同的意见。我的经验法则是这样的:

如果选择 1% 或更少,则索引是好的

如果选择了 10% 或更多,那么全表扫描是好的

else (1%-9%) 需要更详细的分析

于 2013-07-12T11:06:56.893 回答