Python 搜索限制/慢速默认搜索?

Python 搜索限制/慢速默认搜索?,python,postgresql,search,openerp,Python,Postgresql,Search,Openerp,有这样一种方法: def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): if args is None: args = [] if context is None: context = {} ids = [] if name: id

有这样一种方法:

 def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
        if args is None:
            args = []
        if context is None:
            context = {}
        ids = []
        if name:
            ids = self.search(cr, uid, [('name', operator, name)] + args, limit=limit)
        if not ids:
            ids = self.search(cr, uid, [('city_id', operator, name)] + args, limit=limit)
        if not ids:
            ids = self.search(cr, uid, [('street_id', operator, name)] + args, limit=limit)        
        return self.name_get(cr, uid, ids, context=context)
它会找到您想要的内容,但由于某些原因,当没有提供搜索条件时,它的搜索速度非常慢(注意。如果它会返回所有记录,这并不奇怪,但它仍然最多返回160条记录)

这方面几乎没有问题。首先,出于某种原因,它有一个160条记录的极限搜索,即使你在方法中查找,它也显示了100条。如果我改为任何数字,它仍然返回160条记录的最大记录。看起来该参数没有覆盖默认值160

另一个问题是,当我在搜索行中输入任何短语时,它会很快找到结果,不管找到多少结果,因为它限制在160。那没关系。但如果我没有提供任何短语来搜索,并在openerp界面中按小三角形(箭头)(请查看下面的屏幕截图)

当我删除
address completion
字段中的搜索短语时,也会发生同样的情况。然后,它还默认为默认搜索,即按邮政编码列顺序查找前160条记录。出于某种原因,这种方式搜索速度要慢得多。我只是在导入地址时才注意到这种缓慢的性能(现在有超过40万行)

有人知道我该如何改进这种所谓的默认搜索,或者至少限制返回记录以提高性能吗?(正如我出于某种原因所说,将
limit=
更改为其他数字没有任何作用)

理解问题的简单示例:

第一个例子:

我把短语
City1
写在
address completion
字段中。它查找具有
City1
的前160条记录。搜索速度很快

第二个例子:

我没有在
地址完成
字段中写入任何内容,而是按小箭头(屏幕截图中的那个),打开详细搜索。它按邮政编码顺序查找前160条记录。搜索速度很慢

第三个例子:

我从
地址完成
字段中删除了写入的短语
City1
(在我写入之后)。它查找与第二个示例中相同的记录。搜索速度很慢


p.S如果有人需要有关ORM方法中标准OpenERP参数的信息(如我提供的):

删除返回的订单行(按邮政编码排序),速度显著提高。我想如果没有人知道更好的建议,这应该是一个很好的解决方案

更具体地说,代码中有这样一行:

\u订单='name'\name字段用于邮政编码。


我删除了它。

我想主要的问题是,每次调用搜索时,它都试图按
名称/邮政编码
对行进行排序。当有这么多行的时候,它会慢慢地做。当我取消订购时,速度提高了很多。