[wp-hackers] Seeking SQL advice to identify performance problem
Mike Walsh
mpwalsh8 at gmail.com
Wed Jun 20 15:17:09 UTC 2012
I am no SQL guru by any means - as I noted, the SQL came from help on this
mailing list back in 2008. Since I was unable to get the information I
want (first name and last name) using get_users(), I adapted the SQL you
provided below and it works great - thank you very much.
Mike
On Wed, Jun 20, 2012 at 3:43 PM, Bryan Petty <bryan at ibaku.net> wrote:
> On Wed, Jun 20, 2012 at 6:42 AM, Mike Walsh <mpwalsh8 at gmail.com> wrote:
> > In my development area this query takes almost 4 minutes to run and my
> > WordPress database has 650 users defined. There is very little other
> > content in the database besides some test posts.
>
> Sorry, but this is some pretty bad SQL. Let me help though.
>
> The problem here is not that it uses joins, but that it uses joins
> with subqueries, and that it's also a double join with the usermeta
> table, not just the users table (even though no wp_usermeta columns
> are being selected in the outer main query).
>
> If you can, it's recommended that you use Simon's suggested approach
> that does not require custom SQL in your WordPress plugins. However,
> if you have to for one reason or another, here's a much more
> appropriate SQL query:
>
> SELECT ID, display_name, user_email,
> m1.meta_value first_name, m2.meta_value last_name
> FROM wp_users u
> LEFT JOIN wp_usermeta m1 ON
> (m1.user_id = u.ID AND m1.meta_key = 'first_name')
> LEFT JOIN wp_usermeta m2 ON
> (m2.user_id = u.ID AND m2.meta_key = 'last_name')
> WHERE ID <> 1
> ORDER BY last_name
>
> With the proper indexes (in this case, wp_users.ID and
> wp_usermeta.user_id), joins are a very natural part of relational
> databases, and are incredibly efficient as long as they aren't used
> with subqueries. I haven't used a single subquery with this. This
> should run in a fraction of a second even with over 10,000 users,
> possibly even 100,000 users no problem.
>
> Regards,
> Bryan Petty
> _______________________________________________
> wp-hackers mailing list
> wp-hackers at lists.automattic.com
> http://lists.automattic.com/mailman/listinfo/wp-hackers
>
--
Mike Walsh - mpwalsh8 at gmail.com
More information about the wp-hackers
mailing list