Database 对于一个对象图,在多大程度上,多个trip超过了一个查询?
在对数据库发出查询时,在对象图的哪个深度上,仅使用多个trip而不是一个大型查询实际上会变得更高效?这个问题在当前形式下无法回答 这取决于复杂性的性质、所涉及的数据库平台(和版本)、网络连接等 根据我的经验,解决这个问题的最好办法是Database 对于一个对象图,在多大程度上,多个trip超过了一个查询?,database,performance,Database,Performance,在对数据库发出查询时,在对象图的哪个深度上,仅使用多个trip而不是一个大型查询实际上会变得更高效?这个问题在当前形式下无法回答 这取决于复杂性的性质、所涉及的数据库平台(和版本)、网络连接等 根据我的经验,解决这个问题的最好办法是 首先相信你的直觉 衡量结果 如果性能不可接受,则更改策略 从经验中学习 关系数据库(假设您询问它们)不理解/查看中间件中的对象/实体。因此,他们将不知道您的查询来自什么深度。它们都以无状态声明方式运行 话虽如此,一般来说,几个简单的查询代替一个大型查询不会严重影响
- 首先相信你的直觉
- 衡量结果
- 如果性能不可接受,则更改策略
- 从经验中学习
如果底层数据库经过良好的调优和索引,那么获取大量数据的大型查询也是可取的。它减少了通信量,减少了连接,并有助于并发。可能永远不会,因为将数据传输到“处理”单元,特别是将被过滤掉的数据,很可能总是比在本地过滤数据和向客户端发送更少的数据更昂贵,但这确实取决于实际情况。仅举一个例子:一些数据库平台在处理层次结构方面非常糟糕。他问的是层次结构数据吗?我认为他的对象图是他的应用程序实体模型。@srini.venigalla-在我要问的上下文中,对象图是分层的。Wiki上的一个很好的引用:“面向对象的应用程序包含了相关对象的复杂网络。”把它看作是一个深度3的复杂对象图:一个包含一组船的港口,它包含一组板条箱,每个箱子都有一组内容。一个更具体的环境会有帮助吗?例如,ASP.NET MVC 3,带有EF和MySQL数据库。我真正想通过对象图的“复杂性”得到的是作为连接包含的关系的数量。