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计数,你有批号或项目(大约一两个)
你没有提到你正在使用哪个版本,但我们做了一些主要最近有改进。
非常感谢,让我说我想让每个类别的产品类别数量的所有制造商:三星(30),苹果(5)....,其中有很多(数百)。有没有更好的方法来做到这一点? – 2012-07-29 06:39:22