Doctrine Project

  • Log In Access more options
    • Online Help
    • Keyboard Shortcuts
    • About JIRA
    • JIRA Credits
    • What’s New
  • Dashboards Access more options (Alt+d)
  • Projects Access more options (Alt+p)
  • Issues Access more options (Alt+i)
Doctrine 1
  • Doctrine 1
  • DC-787

Join & On override

  • Log In
  • Views
    • XML
    • Word
    • Printable

Details

  • Type: Improvement Improvement
  • Status: Open Open
  • Priority: Major Major
  • Resolution: Unresolved
  • Affects Version/s: None
  • Fix Version/s: None
  • Component/s: Query
  • Labels:
    None

Description

Users & Books are linked by CompoUsersBooks. So, It's a m:m relationship.

Here, a crazy DQL query to fetch users & specifics books.

[code]
$query = Doctrine_Query::create ()
->select ("users., books.")
->from ("Users users")
->leftJoin ("users.alternateBooks alternateBooks")
->leftJoin ("users.books books ON books.id_book = alternateBooks.id_book");
[/code]

The SQL query
[code]
SELECT `s`.`id_show` AS `s__id_show`
FROM `users` `u`
LEFT JOIN `compo_users_books` `c1`
ON ( `u`.`id_user` = `c2`.`id_user` )
LEFT JOIN `books` `b1`
ON `c1`.`id_book` = `b1`.`id_book`
LEFT JOIN `compo_users_books` `c2`
ON `u`.`id_user` = `c2`.`id_user`
LEFT JOIN `books` `b2`
ON `b1`.`id_book` = `b2`.`id_book`
[/code]

As you can see,
The SQL query is correctly build.
But, this SQL Query isn't optimized at all.
Because the following part of code isn't use :
[code]
LEFT JOIN `compo_users_books` `c2`
ON `u`.`id_user` = `c2`.`id_user`
[/code]

And also, the left join is a cartesian product ! The number of row return is really big for nothing...

That really sux because It's performance killer.

Activity

  • All
  • Comments
  • History
  • Activity
  • Source
There are no comments yet on this issue.

People

  • Assignee:
    Guilherme Blanco
    Reporter:
    Thomas Tourlourat - Armetiz
Vote (0)
Watch (0)

Dates

  • Created:
    15/Jul/10 10:12 AM
    Updated:
    15/Jul/10 10:12 AM
  • Atlassian JIRA (v5.2.7#850-sha1:b2af0c8)
  • Report a problem
  • Powered by a free Atlassian JIRA open source license for Doctrine Project. Try JIRA - bug tracking software for your team.