ano*_*ard 6 django postgresql django-orm
使用Django 1.3x.
我目前有一个非常非常非常非常活跃的Postgres数据集,其中有一个重要的列索引为lower(column).
我刚刚意识到一些常见的查询非常慢,因为blah = UPPER(column)当我iexact用来匹配该字段时,Django ORM正在为字段生成查询.
是否有一种简单的方法可以强制使用ORM lower(),或者我是否需要为此进行原始SQL?
谢谢!
[评论的侧面问题:是否有一个很好的理由,被忽视,用于upper()索引,而不是lower()?]
有趣的情况在这里.我以前从来没有真正停下来想过这件事.好像使用UPPER的iexact搜索引入早在修订8536,响应票3575将近三年前,.在此之前,Django一直在使用ILIKE这些类型的搜索.
我查看了后端代码,我唯一可以找到的指向UPPERvs的任何原因LOWER似乎是Oracle在处理不区分大小写的数据时默认为大写.由于其他人是不可知的,似乎Django决定默认UPPER覆盖所有基础.
我从查看源代码得到的另一个印象是你不打算四处使用UPPER.它实际上遍布整个地方,而不仅仅是在实际查询数据库时.Python的upper字符串扩展也经常使用.
我想说你最好的选择就是简单地创建一个索引,upper(column)或者代替它,然后去喝一杯.
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |