1

带有 sql server express 数据库的 net mvc 2 应用程序。

我的应用程序用于估算围栏安装项目。用户在输出 xml 文件的 flash 绘图中绘制所有围栏项目。

使用此数据,用户可以将项目添加到他们制作的图像中的每个元素。基本上,他们使用 Posts、Fence 和 Gate 项目绘制任何类型的配置。

添加绘图元素后。每个元素都有一个“项目价格”

可以添加到每个栅栏或大门的物品类型有:

- Labor
- Material
- Equipment 
- Subcontracts

每个都有一个计算其价格的公式。每个项目的最终价格来自应用程序预算中添加的定价值。这是如何计算每个的示例

Labour1 = qty(user enters this) * unit cost * profit (comes from budget)

unit cost = hour rate(from budget) - discount % (user enters it) * labor burden %(user enters it) * Shipping %(User enters it) * Tax (comes from main application tax setup)
* overhead markup % ( from budget) * profit (from budget) = item price 

这是一种仅计算 1 个劳动力的公式。材料、设备和分包等其他要素的公式非常相似。

所以估计看起来像这样:

在这个例子中,我画了一块栅栏,中间有一个门。从此图表创建的数据如下所示:

Fence = F1 
Gate= G1
Post= P1
Post = P2
Post = P3
Post = P4

为了找到这项工作的最终价格(小计),我添加了所有围栏、大门并发布最终价格。

**Fence F1**

Material = $120
Material 2= 115
Labor 1= $134
Labor 2= $100
Equipment 1= $100
Equipment 2 = $150
Subcontract 1 = $120
Subcontract 2 = $100

**TOTAL FENCE ITEMS= $939**

G1登机口

Mat 1= $100
Labor 1= $200
Equip 1= $400
Subcontract 1= $250

**TOTAL GATES= $950**

那么下一篇文章每个都有这个元素

**P1, P2 P3 P4**

Material 1 = 250 (x4)
equipment 1= $250 (x4)
labor 1 = $100 (x4)
subcontract 1= $200 (x4)

**Total POSTS = $3200**

Total Estimate Price = 939 + 950 +3200 = $5,089

任何估计都可以有不止一个栅栏门或柱子。但基本上对于任何栅栏门或柱子,您都可以添加尽可能多的材料、设备、劳动力和分包合同

前面的示例只是一个典型示例,但其他一些估计总共可以包括多达 30 或 40 个项目。

我有一个加载客户信息和其他常规列的 jqgrid,最后一列是价格:

现在,如果我有大约 50 个估计值,看起来像上面的示例,我的网格将需要大约 45 秒才能加载。

每年将有超过 500 个估计值显示在该网格中。

所以在这个数字上,用 500 一次加载这个网格需要 5 分钟以上。

根据这些信息,你能告诉我这是否是处理这些数据的正常时间吗?

如果您需要任何其他详细信息给我建议,请告诉我。

谢谢

4

1 回答 1

0

根据这些信息,你能告诉我这是否是处理这些数据的正常时间吗?

如果没有您的代码、环境、数据库大小等的更多详细信息,这是不可能回答的。

然而,对我来说,这似乎是很多时间。

您需要开始分析以找出导致问题的部分。是数据库,是数据的处理,是网格的创建还是全部。

因此,分解整个过程并检查导致延迟的原因。

现在如果是数据库: Profile 发送到数据库的 sql。也许您可以创建更高效​​的查询(一步加载所有数据而不是一个一个,也许您需要查看索引?也许您的数据库对于 sql server express 来说太大了(它有内存限制,只会使用一个核心,无论物理服务器有多大)。

既然你提到了linq-to-sql,那么请密切注意延迟加载数据引起的n+1问题。DbLoadOptions LoadWith在这种情况下继续阅读。

在找到导致问题的原因之前,您需要对代码执行类似的步骤

于 2012-04-18T07:53:41.547 回答