Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Apr 29th, 2012  |  syntax: None  |  size: 0.71 KB  |  hits: 12  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to optimize sql query? Seems distinct is very slow?
  2. select count(DISTINCT userid)
  3. from users
  4. where date_trunc('month',login_date)=date_trunc('month','2012-01-12'::date)
  5.        
  6. CREATE OR REPLACE FUNCTION my_date_trunc_month(some_date DATE)
  7.   RETURNS DATE
  8. AS $$
  9. BEGIN
  10.    return date_trunc('month',$1);
  11. END;
  12. $$LANGUAGE plpgsql
  13. IMMUTABLE;
  14.  
  15.  
  16. CREATE INDEX computedIdx ON gameuser_daily_activity (my_date_trunc_month(login_date));
  17.  
  18. select count(DISTINCT gameuser_fk) from gameuser_daily_activity where my_date_trunc_month(login_date)=my_date_trunc_month('2012-01-12'::date)
  19.        
  20. select count(DISTINCT userid)
  21. from users
  22. where
  23. login_date >= '2012-01-12'::date and
  24. login_date < '2012-01-12'::date + '1month'::interval