Sử dụng Django 1.3x.Tôi có thể dễ dàng vượt qua Django ORM 'iexact' để sử dụng LOWER() thay vì UPPER() không?
Tôi hiện đang có bộ dữ liệu Postgres rất, rất lớn và rất, rất tích cực có cột quan trọng được lập chỉ mục là lower(column)
.
Tôi vừa nhận ra rằng một số truy vấn phổ biến khá chậm vì ORM Django đang tạo truy vấn cho trường là blah = UPPER(column)
khi tôi đang sử dụng iexact
để khớp với trường đó.
Có cách nào đơn giản để buộc ORM sử dụng lower()
thay thế hay tôi cần phải thả vào SQL thô cho mục này?
Cảm ơn!
[bên câu hỏi cho ý kiến: Có một lý do chính đáng, bỏ qua, đã sử dụng upper()
trên chỉ số, chứ không phải là lower()
?]
Chris, Cảm ơn câu trả lời của bạn! Tôi cũng đã xem qua những vé đó, nhưng không thấy bất kỳ cuộc thảo luận lớn nào về việc tại sao nó đột nhiên thay đổi thành 'upper()'. Cái nhìn sâu sắc của bạn về bit Oracle là thứ tôi đã nghe nhiều nhất. Đây là một truy vấn đơn giản, thực sự, vì vậy tôi cho rằng tôi sẽ chỉ sử dụng '.raw()' ở đây. Cám ơn rất nhiều! –