![]() |
1
8
您提到的单个多部分命令和存储过程选项是两个选项。你不能这样做,他们是“并行”的数据库。但是,这两种选择都会导致 单程往返 ,所以你在那里很好。没有办法让他们更有效率。在sql server 2005以后的版本中,完全参数化的多部分命令非常有效。 编辑 :添加有关为什么要塞进单个呼叫的信息。 虽然你不想太在意减少通话,但是 可以 这是正当的理由。
|
![]() |
2
36
有点像 this . 这个例子可能不是很好,因为它不能正确地处理对象,但你得到了这个想法。以下是清理版本:
|
![]() |
3
2
做一次往返对三次确实会更缺乏效率。问题是这件事值得不值得。整个ado.net和c 3.5工具集和框架都反对您的尝试。tableadapters、linq2sql、ef,所有这些都喜欢处理简单的one call==one resultset语义。因此,您可能会通过尝试使框架屈服而失去一些重要的生产力。 我想说的是,除非你有一些严重的测量表明你需要减少往返的次数,否则弃权。如果你 做 最终需要这样做,然后使用存储过程至少给出一种api类型的语义。 但如果你的问题真的是你发布的(如选择 全部的 用户, 全部的 团队和 全部的 权限)那么你显然有更大的鱼炸之前,减少往返…首先减少结果集。 |
![]() |
5
0
首先,3次往返并不是什么大事。如果你在说 三百 往返旅行那将是另一回事,但仅3次往返,我将谴责这一点,明确地说,这是一个过早优化的情况。 也就是说,我这样做的方式可能是使用sql执行3个存储过程:
然后,可以像直接执行多个行集一样遍历返回的结果集。 |
![]() |
6
0
建一个临时表?将所有结果插入临时表,然后
在,
等。。。只访问一次数据库,但我不确定它是否更有效。 |
![]() |
Charles Bryant · redis数据访问的关键设计 7 年前 |