2009-11-04 74 views
2

你好,我正在创建一个Windows应用程序,将安装在10台将通过实体框架访问相同数据库的计算机上。许多连接与大数据查询

我想知道什么是更好:

  1. 传播查询到的数据包(即负载触点,然后安装附带的导航属性 - [DataContext.Contacts.Include(“电话”])
  2. 负载一切在一个查询而不是分裂它在单个查询。
  3. 你的名字。

BTW我有它的踪影根弦超过500行的SQL查询,即时通讯怀疑,也许我应该放弃用户表现,因为性能也是u.e.的一部分。

+2

500行的SQL可能相当快。 – 2009-11-04 14:01:29

回答

1

在一个查询中加载所有内容而不是 ,然后将其拆分为单个的 查询。

这通常会优越。你通常会写更多的查询而不是聊天。更少的通话开销少 - 您需要获得更少的连接,处理更少的延迟等。

数据库服务器是否必须支持其他应用程序?对于大多数商业软件应用程序来说,SQL服务器甚至不会为10个客户端服务 - 特别是执行基本实体查找。除非它安装在486SX上,否则它甚至不会知道你在那里。

2

您可以将SQL存储在存储过程中,并编写您的实体框架逻辑来使用这些过程,而不是通过生成SQL并通过网络发送它。

+0

好主意。但是后缀,我应该避免大的查询或更好的查询超过20个单独的连接吗? – Shimmy 2009-11-04 14:02:22

+1

一个大问题很好,在很多情况下可能是你想要的一般情况。但是,如果您确实使用存储过程,那么您将可以选择使用0或多个子进程的父进程,这样可以让您组织或将大查询分解为更小的逻辑块,如果这样做有意义。所以你的.net逻辑将调用父进程,但父进程可能调用0或许多子进程来为你提供所需的数据。 – Kuberchaun 2009-11-04 14:14:06

2

与所有数据库相关,这取决于。像连接类型(局域网和广域网),你如何处理缓存,数据库负载水平,数据库负载类型(写入vs读取)等等都可以有所作为。

但是总的来说,只要你可以减少往返数据库的次数,这是件好事。请记住:执行单个SqlCommand后可以有多个结果集。

+0

它将安装在客户端和服务器的10g LAN网络中。 – Shimmy 2009-11-04 16:41:42