我测试了单个巨大集合与多个小集合的两种情况,并在查询时发现性能上存在巨大差异。以下是我的操作:
场景1:我创建了一个产品集合,其中包含10种不同类型的产品,总共有1000万条记录,每种产品类型都有100万条记录,并在ProductType上创建了索引。当我运行一个样本查询来检索10个ProductType = 1且价格大于100的记录时,而限制结果只返回10个记录,这需要约35毫秒时间。但是,当ProductType = 1的记录很少并且价格大于100时,相同的查询需要大约8000毫秒(8秒)��能完成。
场景2:我为每种产品类型创建了10个不同的产品表格,每个表格包含100万条记录。在第一张表格中,即仅包含ProductType = 1的记录的表格中,我运行了同样的样本查询,要求返回价格大于100的10个记录,这需要大约2.5毫秒时间。但是,当ProductType = 1的记录很少并且价格大于100时,相同的查询需要约1500毫秒(1.5秒)才能完成。
那么,为什么会有这么大的差异呢?第一种和第二种场景之间唯一的区别就是一个巨大的集合和多个更小的集合。但是,在第一种情况下,我为单个巨大集合创建了ProductType的索引。我猜想第一种情况下的性能差异是由于索引造成的,并且我需要在第一种情况下使用这个索引,否则性能会更加糟糕。我预期第一种情况下由于索引而导致性能稍有下降,但我没有预料到第一种情况下会出现如此之大的性能下降,约慢了10倍。
所以是一个巨大集合 vs 多个小集合,运行时间分别为8000毫秒和1500毫秒。为什么呢?
场景1:我创建了一个产品集合,其中包含10种不同类型的产品,总共有1000万条记录,每种产品类型都有100万条记录,并在ProductType上创建了索引。当我运行一个样本查询来检索10个ProductType = 1且价格大于100的记录时,而限制结果只返回10个记录,这需要约35毫秒时间。但是,当ProductType = 1的记录很少并且价格大于100时,相同的查询需要大约8000毫秒(8秒)��能完成。
场景2:我为每种产品类型创建了10个不同的产品表格,每个表格包含100万条记录。在第一张表格中,即仅包含ProductType = 1的记录的表格中,我运行了同样的样本查询,要求返回价格大于100的10个记录,这需要大约2.5毫秒时间。但是,当ProductType = 1的记录很少并且价格大于100时,相同的查询需要约1500毫秒(1.5秒)才能完成。
那么,为什么会有这么大的差异呢?第一种和第二种场景之间唯一的区别就是一个巨大的集合和多个更小的集合。但是,在第一种情况下,我为单个巨大集合创建了ProductType的索引。我猜想第一种情况下的性能差异是由于索引造成的,并且我需要在第一种情况下使用这个索引,否则性能会更加糟糕。我预期第一种情况下由于索引而导致性能稍有下降,但我没有预料到第一种情况下会出现如此之大的性能下降,约慢了10倍。
所以是一个巨大集合 vs 多个小集合,运行时间分别为8000毫秒和1500毫秒。为什么呢?