Odoo字段设置索引-多列联合索引

5 篇文章 0 订阅
在创建模块时,字段索引设计对性能有显著影响。单字段索引可以通过设置index参数实现,如`name=fields.Char(名称,index=True)`。对于多字段联合索引,Odoo中需自定义初始化方法创建,如`createindexemployee_name_age_idxonemployee(name,age)`。合理使用索引能提升查询速度和系统处理效率。
摘要由CSDN通过智能技术生成

需求: 在创建模块生成数据库表结构时,一般也要设计字段是否需要添加索引,或者多个字段联合索引。

单字段添加索引

设置索引只需要在字段初始化时添加index参数,index (bool, default: False)
index默认是False,如果需要将字段添加索引设置为True即可

name = fields.Char(string='名称', index=True)
age = fields.Integer(string='年龄', index=True)

虽然nameage都添加了索引,但是都是单独索引,不是联合索引。

多字段联合索引

在数据查询时一般需要设置联合索引,那么odoo默认是没有此方法的,需要在init初始创建对应联合索引。代码如下:

@api.model
def init(self):
	# 查询索引名称是否存在
    self._cr.execute('''
        select indexname from pg_indexes where indexname = 'employee_name_age_idx'
    ''')
    # 不存在则设置索引
    if not self._cr.fetchone():
    	# 执行创建索引sql
        self._cr.execute('''
            create index employee_name_age_idx on employee (name, age)
        ''')

小结

合理的添加索引会大大增加系统及数据的访问速度和处理速度,在设计的时候尽量创建联合索引来覆盖大多数查询,这里就扩展讨论了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我在那路边

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值