我测试了两种场景单巨大集合VS多个小集合,发现在性能上巨大的差异,而查询。 下面是我做的。
案例1:我创建了一个包含10万条记录10种不同类型的产品的产品集合,在这正好1万条记录每个产品类型,我对ProductType创建的索引。 当我跑了条件ProductType = 1和ProductPrice> 100和限制(10)样本查询返回10条记录ProductType = 1,并且其价格大于100,花了大约35毫秒时,收集了大量的产品,其价格超过100,同样的查询花了大约8000毫秒(8秒),当我们在ProductType = 1,其价格大于100非常少的产品数量。
案例2:我创建了10个不同的产品表中的每个含有1万条记录每一个ProductType。 在收集1包含记录productType 1,当我跑了条件ProductPrice相同的样本查询> 100和限制(10)返回10条记录的产品,其价格大于100,花了大约2.5毫秒时,收集了很多的产品,其价格比100多了,同样的查询花了大约1500毫秒(1.5秒)时,我们有非常少的产品,其价格大于100号。
那么,为什么有这么大的差别? 的情况下,一个与案件两者之间唯一的区别是一个巨大集合VS多个较小的集合,但我在第一种情况下一个单一的巨大集合创建ProductType的指数。 我猜的性能差异是由指数在第一种情况下造成的,我需要的是,在第一种情况下指数否则它会在性能更最差。 我预计一些性能在第一种情况下慢,由于指数,但我没想到的巨大差异在第一种情况下的10倍左右缓慢。
所以8000毫秒VS上的一个巨大集合1500毫秒VS多个小集合。 为什么?