SQL Server性能和查询执行

时间:2013-07-10 12:35:44

标签: asp.net sql sql-server sql-server-2008 sql-server-2008-r2

几天前很难..,

我已经为大学生开发了在线录取申请流程并且非常成功。

让我来解决我面临的问题,

  1. 问题涉及2个表: Student_AdmissionDetails (包含近30-35个字段,其中大多数字段的数据类型为nvarchar(70)),另一个是 StudentCategory
  2. 从录取过程开始几天后,Student_AdmissionDetails有大约3,00,000条记录,而StudentCategory有4条记录
  3. 我开发了一个仪表板,我想在每个类别中显示不适用学生。为了达到这个目的,我进行了以下查询。

    Select count(*)
    from Student_AdmissionDetails
    inner join StudentCategory
    on Student_AdmissionDetails.Id=StudentCategory.Id
    where CategoryTypeName=@ParameterValue

  4. 以上查询在单页上被触发3次。有250-300名用户同时访问同一页面。与入学表格一样,有1300-2000名学生同时填写表格。

    我得到的问题是当我在sql server中运行查询时,它会在5次中被触发1次。 抛出从内存访问对象时发生死锁的错误(原谅我没记住确切的错误)。

    我正在寻找以下帖子:

    • 这次我有点幸运,因为我没有让我的编码不满意,但任何人都可以让我知道如何克服这种情况。什么是处理大型数据库的最佳方法
    • 我试图用SQL分析器解决这个问题,但是由于还有5个应用程序运行了类似的我的,我无法找出有多少用户试图访问相同的资源。

    我想以下几点将有助于回答我的问题。

    • 应用程序服务器和数据库服务器不同
    • 数据库服务器在Windows XP上运行(我猜!)它的RAM为128 GB
    • 当我从SQL Server执行查询时,执行查询的平均时间为12-15秒。

    为写这篇文章而道歉,但我真的需要帮助来学习这个:)

1 个答案:

答案 0 :(得分:0)

尝试更新添加SELECT的{​​{1}}语句。这会使您的结果不那么精确,但它似乎对您的仪表板来说已经足够了。

最好在WITH (NOLOCK)子句中使用整数CategoryTypeId而不是CategoryTypeName