Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 对于一个对象图,在多大程度上,多个trip超过了一个查询?_Database_Performance - Fatal编程技术网

Database 对于一个对象图,在多大程度上,多个trip超过了一个查询?

Database 对于一个对象图,在多大程度上,多个trip超过了一个查询?,database,performance,Database,Performance,在对数据库发出查询时,在对象图的哪个深度上,仅使用多个trip而不是一个大型查询实际上会变得更高效?这个问题在当前形式下无法回答 这取决于复杂性的性质、所涉及的数据库平台(和版本)、网络连接等 根据我的经验,解决这个问题的最好办法是 首先相信你的直觉 衡量结果 如果性能不可接受,则更改策略 从经验中学习 关系数据库(假设您询问它们)不理解/查看中间件中的对象/实体。因此,他们将不知道您的查询来自什么深度。它们都以无状态声明方式运行 话虽如此,一般来说,几个简单的查询代替一个大型查询不会严重影响

在对数据库发出查询时,在对象图的哪个深度上,仅使用多个trip而不是一个大型查询实际上会变得更高效?

这个问题在当前形式下无法回答

这取决于复杂性的性质、所涉及的数据库平台(和版本)、网络连接等

根据我的经验,解决这个问题的最好办法是

  • 首先相信你的直觉
  • 衡量结果
  • 如果性能不可接受,则更改策略
  • 从经验中学习
关系数据库(假设您询问它们)不理解/查看中间件中的对象/实体。因此,他们将不知道您的查询来自什么深度。它们都以无状态声明方式运行

话虽如此,一般来说,几个简单的查询代替一个大型查询不会严重影响性能,前提是(1)通过池重用连接(2)连接打开关闭生命周期较短


如果底层数据库经过良好的调优和索引,那么获取大量数据的大型查询也是可取的。它减少了通信量,减少了连接,并有助于并发。

可能永远不会,因为将数据传输到“处理”单元,特别是将被过滤掉的数据,很可能总是比在本地过滤数据和向客户端发送更少的数据更昂贵,但这确实取决于实际情况。仅举一个例子:一些数据库平台在处理层次结构方面非常糟糕。他问的是层次结构数据吗?我认为他的对象图是他的应用程序实体模型。@srini.venigalla-在我要问的上下文中,对象图是分层的。Wiki上的一个很好的引用:“面向对象的应用程序包含了相关对象的复杂网络。”把它看作是一个深度3的复杂对象图:一个包含一组船的港口,它包含一组板条箱,每个箱子都有一组内容。一个更具体的环境会有帮助吗?例如,ASP.NET MVC 3,带有EF和MySQL数据库。我真正想通过对象图的“复杂性”得到的是作为连接包含的关系的数量。