diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2007-12-20 17:12:45 +0000 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2007-12-20 17:12:45 +0000 |
commit | 1ba15b207c30aafc5c4ef1c464d356442139837f (patch) | |
tree | 52c47bae8436f30acc480232c995daaa2902fe64 /src/odbc/odbc_queries.erl | |
parent | PEP notification bugfix (diff) |
User count performance improvements
SVN Revision: 1086
Diffstat (limited to 'src/odbc/odbc_queries.erl')
-rw-r--r-- | src/odbc/odbc_queries.erl | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/src/odbc/odbc_queries.erl b/src/odbc/odbc_queries.erl index 98e074b38..e4daefbb7 100644 --- a/src/odbc/odbc_queries.erl +++ b/src/odbc/odbc_queries.erl @@ -147,17 +147,26 @@ list_users(LServer, [{prefix, Prefix}, "limit ~w offset ~w ", [Prefix, Limit, Offset])). users_number(LServer) -> - case ejabberd_config:get_local_option( - {pgsql_users_number_estimate, LServer}) of + case element(1, ejabberd_config:get_local_option({odbc_server, LServer})) of + mysql -> + ejabberd_odbc:sql_query( + LServer, + "select table_rows from information_schema.tables where table_name='users'"); + pgsql -> + case ejabberd_config:get_local_option({pgsql_users_number_estimate, LServer}) of true -> ejabberd_odbc:sql_query( - LServer, - "select reltuples from pg_class " - "where oid = 'users'::regclass::oid"); + LServer, + "select reltuples from pg_class where oid = 'users'::regclass::oid"); _ -> ejabberd_odbc:sql_query( - LServer, - "select count(*) from users") + LServer, + "select count(*) from users") + end; + _ -> + ejabberd_odbc:sql_query( + LServer, + "select count(*) from users") end. users_number(LServer, [{prefix, Prefix}]) when is_list(Prefix) -> |