[Dbix-class] Subquery overhead with slice()
    Nickolay Platonov 
    nickolay8 at gmail.com
       
    Wed Aug  6 12:35:08 BST 2008
    
    
  
Hi all
Not sure I'm posting to appropriate maillist, may be someone will advise
where to forward this.
I'd like to draw attention on 1 useless subquery, which is produces by
slice() for DBIx::Class::Storage::DBI::Oracle::Generic
for example $rs->slice(8,15) will produce following query, containing 2
subqueries:
SELECT * FROM
(
    SELECT A.*, ROWNUM r FROM
    (
        SELECT me.id AS col1, me.name AS col2, me.description AS col3,
current_photo.path AS col4 FROM place me LEFT JOIN photo current_photo ON (
current_photo.id =3D me.current_photo_id )
    ) A
    WHERE ROWNUM < 16
) B
WHERE r >=3D 9
meanwhile exactly the same result can be achieved with only 1 subquery:
SELECT * FROM
(
        SELECT
          me.id AS col1, me.name AS col2, me.description AS col3,
current_photo.path AS col4, ROWNUM AS r
        FROM
          place me
        LEFT JOIN photo current_photo
          ON ( current_photo.id =3D me.current_photo_id )
                WHERE
          ROWNUM < 16
) B
WHERE r >=3D 9
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20080806/b6f=
5ff3e/attachment.htm
    
    
More information about the DBIx-Class
mailing list