关于最小化SQL服务器调用

时间:2010-11-18 04:20:06

标签: c# asp.net sql-server

所以我有这个页面,它有很多方法..一些方法是获取用户的电子邮件..一个是绑定转发器,另一个是更改密码和所有。现在,在每个方法中调用一些存储过程,并在DB中进行更改。

所以我的页面的Page_load事件如下所示: -

    protected void Page_Load(object sender, EventArgs e)
    {

                BindCon();
                getemail();
                getadd();
                BindRepeater();

                getpic();


}

现在这种方式就像反复调用SQL服务器一样会影响性能。我想可能是我可以创建一个存储过程,它将执行上述方法中使用的所有存储过程一次,而不是像上面那样反复调用SQL服务器。现在我如何创建存储的P并在我的代码中使用它?需要想法... thnx

2 个答案:

答案 0 :(得分:2)

如果您从表格中的一行(帐户,电子邮件,年龄等)单独获取所有这些内容,您绝对应该在一行中一次性获取所有这些内容而不是每列的调用。

此外,如果您从单独的表中获取可以与联接组合以创建单行(帐户,收件箱中的邮件数量,帐户余额),您可以在SP中执行此操作并获取单行

如果事物确实是单独的实体(用户帐户占一行,权限有多行),您还可以从存储过程返回多个结果集,并使用ADO.NET功能,可以获得下一个结果集。

请注意,在某些运行时间较长的SP中,最好使用异步ADO.NET并行调用所有SP,因为单个SP将有效地强制操作以串行方式运行。

在数据库跨越子系统的任何情况下,您都可能会创建维护问题,因为您可能正在创建跨越实体边界的SP,并且会受到对任一子系统的更改的影响。在可能的情况下,交叉SP会在每个实体域中调用单独的SP,以尽可能地将其解耦。即使由于未来的变化需要进行更改,这至少应该使依赖性变得清晰。

答案 1 :(得分:0)

您可以运行SQL事件探查器,分析重复内容并减少您通常不需要的内容。由于您使用的是ASP.Net,因此可以利用Session,Application和Cache等状态根据需要存储数据。