[wp-trac] [WordPress Trac] #29785: User count not correct

WordPress Trac noreply at wordpress.org
Thu Jan 5 18:05:48 UTC 2017


#29785: User count not correct
-------------------------------------------------+-------------------------
 Reporter:  psoluch                              |       Owner:
     Type:  defect (bug)                         |  boonebgorges
 Priority:  normal                               |      Status:  assigned
Component:  Users                                |   Milestone:  Future
 Severity:  normal                               |  Release
 Keywords:  good-first-bug has-unit-tests has-   |     Version:
  patch needs-testing                            |  Resolution:
                                                 |     Focuses:
                                                 |  performance
-------------------------------------------------+-------------------------

Comment (by tharsheblows):

 I'm not sure on performance testing but here is cheap and cheerful look at
 the MYSQL query performance for 184k users and user meta table with 3.2
 million rows (on average over 17 meta entries per user <sob>).

 `count_users( 'memory' )` is fine with patch.
 {{{
 #!mysql
 #no patch: 0.0813s
 SELECT meta_value FROM wp_usermeta WHERE meta_key = 'wp_capabilities'

 #with patch: 0.0803s
 SELECT meta_value FROM wp_usermeta JOIN wp_users ON user_id = ID WHERE
 meta_key = 'wp_capabilities'
 }}}

 `count_users( 'time' )` has two factors which increase query time:
  - number of users
  - number of roles
 The patch increases the query time substantially for me (~0.6s) when using
 `count_users( 'time' )` with the standard WP roles only and more with an
 increased number of roles.

 `count_users()` is a problem for me already, increasing the query time
 would hurt.

 Here's what I ran, as always please let me know any errors:

 {{{
 #!mysql

 #default WP roles without patch: 1.497s
 SELECT
 COUNT(NULLIF(`meta_value` LIKE '%\"administrator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"editor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"author\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"contributor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"subscriber\"%', false)),
 COUNT(NULLIF(`meta_value` = 'a:0:{}', false)),
 COUNT(*)
 FROM wp_usermeta
 WHERE meta_key = 'wp_capabilities'

 #default WP roles with patch: 2.100s
 SELECT
 COUNT(NULLIF(`meta_value` LIKE '%\"administrator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"editor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"author\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"contributor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"subscriber\"%', false)),
 COUNT(NULLIF(`meta_value` = 'a:0:{}', false)),
 COUNT(*)
 FROM wp_usermeta
 JOIN wp_users
 ON user_id = ID
 WHERE meta_key = 'wp_capabilities'

 #including bbPress roles without patch: 2.289s
 SELECT
 COUNT(NULLIF(`meta_value` LIKE '%\"administrator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"editor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"author\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"contributor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"subscriber\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_keymaster\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_moderator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_participant\"%',false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_spectator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_blocked\"%', false)),
 COUNT(NULLIF(`meta_value` = 'a:0:{}', false)),
 COUNT(*)
 FROM wp_usermeta
 WHERE meta_key = 'wp_capabilities'

 #including bbPress roles with patch: 2.945s
 SELECT
 COUNT(NULLIF(`meta_value` LIKE '%\"administrator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"editor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"author\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"contributor\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"subscriber\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_keymaster\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_spectator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_blocked\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_moderator\"%', false)),
 COUNT(NULLIF(`meta_value` LIKE '%\"bbp\\_participant\"%', false)),
 COUNT(NULLIF(`meta_value` = 'a:0:{}', false)),
 COUNT(*)
 FROM wp_usermeta
 JOIN wp_users
 ON user_id = ID
 WHERE meta_key ='wp_capabilities'
 }}}

--
Ticket URL: <https://core.trac.wordpress.org/ticket/29785#comment:19>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list