net MVC 2 应用程序,带有 SQL Server Express 数据库。
我的应用程序用于估算围栏安装项目。用户在输出 xml 文件的 Flash 绘图中绘制所有围栏项目。
使用此数据,用户可以将项目添加到他们制作的图像中的每个元素中。基本上,他们使用柱子,栅栏和门项目绘制任何类型的配置。
添加绘图元素后。每个元素都有一个"商品价格"
可以添加到每个柱栅栏或大门的物品类型是:
- 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**
那么下一篇文章 EACH 都有这个元素
**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 分钟以上。
根据这些信息,你能告诉我这是否是处理这些数据的正常时间吗?
如果您需要任何其他详细信息来给我建议,请告诉我。
谢谢
根据这些信息,你能告诉我这是否是一个正常的时间 处理这些数据?
如果没有代码、环境、数据库大小等的更多细节,这是不可能实现的。
然而,对我来说,这似乎很多时间。
您需要开始分析以找出导致问题的部件。是数据库,是数据的处理,是网格的创建还是全部。
因此,请分解整个过程并检查导致延迟的原因。
现在,如果是数据库:分析发送到数据库的 sql。也许您可以创建更高效的查询(一步加载所有数据而不是逐个加载,也许您需要查看索引?也许您的数据库对于 sql server express 来说太大了(它有内存限制,无论物理服务器有多大,都只使用一个内核)。
既然你提到了linq-to-sql,那就要密切注意延迟加载数据导致的n+1问题。在这种情况下,请阅读DbLoadOptions
LoadWith
。
您需要对代码执行的类似步骤,直到找到导致问题的原因