RavenDB方面需要很长的查询时间

问题描述:

我是ravendb的新手,并尝试了解它是否能为我工作的公司完成工作。RavenDB方面需要很长的查询时间

我更新了10K记录到服务器的数据。 每个数据看起来像这样:

{ 
    "ModelID": 371300, 
    "Name": "6310I", 
    "Image": "0/7/4/9/28599470c", 
    "MinPrice": 200.0, 
    "MaxPrice": 400.0, 
    "StoreAmounts": 4, 
    "AuctionAmounts": 0, 
    "Popolarity": 16, 
    "ViewScore": 0.0, 
    "ReviewAmount": 4, 
    "ReviewScore": 40, 
    "Cat": "E-Cellphone", 
    "CatID": 1100, 
    "IsModel": true, 
    "ParamsList": [ 
    { 
     "ModelID": 371300, 
     "Pid": 188396, 
     "IntVal": 188402, 
     "Param": "Nokia", 
     "Name": "Manufacturer", 
     "Unit": "", 
     "UnitDir": "left", 
     "PrOrder": 0, 
     "IsModelPage": true 
    }, 
    { 
     "ModelID": 371305, 
     "Pid": 398331, 
     "IntVal": 1559552, 
     "Param": "1.6", 
     "Name": "Screen size", 
     "Unit": "inch", 
     "UnitDir": "left", 
     "PrOrder": 1, 
     "IsModelPage": false 
},..... 

其中ParamsList是单个产品的所有属性的数组。

from doc in docs.FastModels 
from docParamsListItem in ((IEnumerable<dynamic>)doc.ParamsList).DefaultIfEmpty() 
select new { Param = docParamsListItem.IntVal, Cat = doc.Cat } 

var facetSetupDoc = new FacetSetup 
     { 
      Id = "facets/Params2Facets", 
      Facets = new List<Facet> { new Facet { Name = "Param" } } 
     }; 

一个面和搜索这样

var facetResults = session.Query<FastModel>("ParamNewIndex") 
       .Where(x => x.Cat == "e-cellphone") 
       .ToFacets("facets/Params2Facets"); 

花费超过一秒钟来查询,那就是:

建立的索引之后只有10K的数据。我们公司在数据库中拥有超过1M个产品。

我做错了什么?

为了生成方面,您必须检查每个的每个值&。如果你有很多,那可能需要一些时间。 一般来说,你不应该有很多方面,因为这没有意义,它不会帮助用户。 对于整数,通常使用范围,而不是实际值。 例如,价格在一定范围内。 您只使用该领域的东西,如制造商或MegaPixels计数,你有批号或项目(大约一两个)

你没有提到你正在使用哪个版本,但我们做了一些主要最近有改进。

+0

非常感谢,让我说我想让每个类别的产品类别数量的所有制造商:三星(30),苹果(5)....,其中有很多(数百)。有没有更好的方法来做到这一点? – 2012-07-29 06:39:22