前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ODOO优化层级关系查询效率的方法

ODOO优化层级关系查询效率的方法

作者头像
企鹅号小编
发布2017-12-29 10:59:15
2.2K0
发布2017-12-29 10:59:15
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

《Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系的建立。 代码如下

在上面的代码中。

使用字段来关联上层记录。

使用这个属性来开启分层搜索功能.

使用和字段来进行记录所属层级,当时看书的时候对这些代码不是很理解,只是知道这样做能够提高层级关系数据模型查询数据记录的效率。

简单原理

查询分层结构记录时,一般的想到的方法是从根目录开始,对每个子目录进行递归查询.然后才能得出具体的分层结构。(如递归查询文件夹文件)

Odoo中为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加跟字段. 假设A是B的上级对象。那么存在这样的逻辑关系。

画个图来理解下

可以看到,图中的B属于A的,清楚的表示了A,B的层级从属关系。

Odoo 应用

我们用Odoo11的product模块作为演示 在文件中.看到产品目录(ProductCategory类.15行起)的代码

在Odoo11的演示数据中,产品的目录结构一共有6个

我们查询下数据库中的数据,获取每个产品目录各自的数值

注:这里可以发现,上层目录

添加数值

通过上面的展示,可以清楚的看到所有产品目录各自的包含结构。根目录为All,然后依次为Internal,Saleable. Saleable下面又有3个子目录…

假设要找到All产品目录下的所有产品目录

只需要一条查询语句即可找到所有子目录.无须遍历. 要找Saleable下的所有子目录即可使用 作为条件

结论:

在Odoo的实际使用中,发现使用parent存储特性的模块主要涉及account, product, stock_location. 因为这个优化对查询层级结构效率有良好效果。 凡事皆有两面,这种存储特性会在数据库中添加多余的字段。其实是以空间换时间。

参考

https://stackoverflow.com/questions/11861436/parent-left-and-parent-right-in-openerp

本文来自企鹅号 - Odoo中文媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - Odoo中文媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档