Comment 2 for bug 618356

Revision history for this message
Curtis Hovey (sinzui) wrote : Re: Person-picker takes a very long time consistently

This query took 8269ms.

SELECT Person.account,
       Person.creation_comment,
       Person.creation_rationale,
       Person.datecreated,
       Person.defaultmembershipperiod,
       Person.defaultrenewalperiod,
       Person.displayname,
       Person.hide_email_addresses,
       Person.homepage_content,
       Person.icon,
       Person.id,
       Person.logo,
       Person.mailing_list_auto_subscribe_policy,
       Person.merged,
       Person.mugshot,
       Person.name,
       Person.personal_standing,
       Person.personal_standing_reason,
       Person.registrant,
       Person.renewal_policy,
       Person.subscriptionpolicy,
       Person.teamdescription,
       Person.teamowner,
       Person.verbose_bugnotifications,
       Person.visibility
FROM
  (SELECT DISTINCT Person.account, Person.creation_comment, Person.creation_rationale, Person.datecreated, Person.defaultmembershipperiod, Person.defaultrenewalperiod, Person.displayname, Person.hide_email_addresses, Person.homepage_content, Person.icon, Person.id, Person.logo, Person.mailing_list_auto_subscribe_policy, Person.merged, Person.mugshot, Person.name, Person.personal_standing, Person.personal_standing_reason, Person.registrant, Person.renewal_policy, Person.subscriptionpolicy, Person.teamdescription, Person.teamowner, Person.verbose_bugnotifications, Person.visibility, Person.name = 'david.wonderly'
   FROM (
           (SELECT Person.account, Person.creation_comment, Person.creation_rationale, Person.datecreated, Person.defaultmembershipperiod, Person.defaultrenewalperiod, Person.displayname, Person.hide_email_addresses, Person.homepage_content, Person.icon, Person.id, Person.logo, Person.mailing_list_auto_subscribe_policy, Person.merged, Person.mugshot, Person.name, Person.personal_standing, Person.personal_standing_reason, Person.registrant, Person.renewal_policy, Person.subscriptionpolicy, Person.teamdescription, Person.teamowner, Person.verbose_bugnotifications, Person.visibility
            FROM Person
            LEFT JOIN EmailAddress ON EmailAddress.person = Person.id
            WHERE Person.id IN
                (SELECT id
                 FROM
                   (SELECT Person.id, 100 AS rank
                    FROM Person
                    WHERE name = 'david.wonderly'
                    UNION ALL SELECT Person.id, rank(fti, ftq('david.wonderly'))
                    FROM Person
                    WHERE Person.fti @@ ftq('david.wonderly')
                    UNION ALL SELECT Person.id, 10 AS rank
                    FROM Person, IrcId
                    WHERE IrcId.person = Person.id
                      AND LOWER(IrcId.nickname) = 'david.wonderly'
                    UNION ALL SELECT Person.id, 1 AS rank
                    FROM Person, EmailAddress
                    WHERE EmailAddress.person = Person.id
                      AND LOWER(email) LIKE 'david.wonderly' || '%%'
                      AND EmailAddress.status IN (2, 4)) AS public_subquery
                 ORDER BY rank DESC LIMIT 100)
              AND Person.visibility = 1
              AND Person.merged IS NULL
              AND (NOT (Person.teamowner IS NULL)
                   OR EmailAddress.status = 4))
         UNION
           (SELECT Person.account, Person.creation_comment, Person.creation_rationale, Person.datecreated, Person.defaultmembershipperiod, Person.defaultrenewalperiod, Person.displayname, Person.hide_email_addresses, Person.homepage_content, Person.icon, Person.id, Person.logo, Person.mailing_list_auto_subscribe_policy, Person.merged, Person.mugshot, Person.name, Person.personal_standing, Person.personal_standing_reason, Person.registrant, Person.renewal_policy, Person.subscriptionpolicy, Person.teamdescription, Person.teamowner, Person.verbose_bugnotifications, Person.visibility
            FROM Person
            JOIN TeamParticipation ON TeamParticipation.team = Person.id
            WHERE (Person.fti @@ ftq('david.wonderly'))
              AND TeamParticipation.person = 3020039
              AND NOT (Person.teamowner IS NULL)
              AND Person.visibility = 30
            ORDER BY rank(fti, ftq('david.wonderly')) DESC LIMIT 100)) AS Person
   WHERE TRUE) AS Person
ORDER BY (Person.name = 'david.wonderly') DESC, Person.displayname,
                                                 Person.name LIMIT 7
OFFSET 0
;