【问题标题】:sql query speed issue is this normalsql查询速度问题这个正常吗
【发布时间】:2012-04-18 05:47:35
【问题描述】:

带有 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 分钟以上。

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

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

谢谢

【问题讨论】:

    标签: json sql-server-2008 linq-to-sql subsonic3


    【解决方案1】:

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

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

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

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

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

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

    既然提到了linq-to-sql,那么请密切注意延迟加载数据导致的n+1问题。在这种情况下阅读DbLoadOptionsLoadWith

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

    【讨论】:

    • 你好只是想提供一个更新。网格使用亚音速 ORM 将数据加载到网格中。这几乎是延迟。我们现在将网格更改为 ADO.net 并直接从数据库加载,网格加载速度从 ~10 秒变为
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2010-09-07
    相关资源
    最近更新 更多