mirror of
https://github.com/django/django.git
synced 2024-12-26 02:56:25 +00:00
Fixed #9136: Do slicing in Oracle with rownum instead of row_number() for a speed improvement. Thanks, Guillaume Taglang.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@9235 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
9feebb10f9
commit
934025e58d
@ -111,9 +111,10 @@ def query_class(QueryClass, Database):
|
|||||||
# Wrap the base query in an outer SELECT * with boundaries on
|
# Wrap the base query in an outer SELECT * with boundaries on
|
||||||
# the "_RN" column. This is the canonical way to emulate LIMIT
|
# the "_RN" column. This is the canonical way to emulate LIMIT
|
||||||
# and OFFSET on Oracle.
|
# and OFFSET on Oracle.
|
||||||
sql = 'SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY 1) AS "_RN", "_SUB".* FROM (%s) "_SUB") WHERE "_RN" > %d' % (sql, self.low_mark)
|
high_where = ''
|
||||||
if self.high_mark is not None:
|
if self.high_mark is not None:
|
||||||
sql = '%s AND "_RN" <= %d' % (sql, self.high_mark)
|
high_where = 'WHERE ROWNUM <= %d' % (self.high_mark,)
|
||||||
|
sql = 'SELECT * FROM (SELECT ROWNUM AS "_RN", "_SUB".* FROM (%s) "_SUB" %s) WHERE "_RN" > %d' % (sql, high_where, self.low_mark)
|
||||||
|
|
||||||
return sql, params
|
return sql, params
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user