Impacted versions:
8.0 and so on

Steps to reproduce:
create a many2many field in product.product such as:
`'company_ids':fields.many2many('res.company','res_company_product_rel','partner_id','company_ids',string=u'multi company''),`
and add a ir.rule for product.product with  domain such as
`['|',('company_id','=',False),('company_ids','in',[c.id for c in user.company_ids])]`
and import 10 thousand product.
then login with normal user(not super) and open the product.produt list view
it taks several minus to open

Current behavior:
when I search product.product
all product id have been hard coded in the sql 
lead to low performance.

Expected behavior:
not hard code produt id

Video/Screenshot link (optional):
in the sql below 10 thousand product id have been hard code in the position %s
AND ("product_product__product_tmpl_id"."company_id" IS NULL   OR  ("product_product"."id" in (%s)))

else:
                left, operator, right = leaf.leaf
            path = left.split('.', 1)
            model = leaf.model
            field = model._fields.get(path[0])
            column = model._columns.get(path[0])
            comodel = model.pool.get(getattr(field, 'comodel_name', None))
            # 
            # 
            # 
            # 
            # 
            # 
            if leaf.is_operator() or leaf.is_true_leaf() or leaf.is_false_leaf():
                push_(leaf)
            # 
            # 
            # 
            #    
            # 
            # 
            #    
            #    
            # 
            # 
            elif not column and path[0] in model._inherit_fields:
                # 
                #  
                #                    
                next_model = model.pool[model._inherit_fields[path[0]][0]]