I'm a MySQL newbie, though I've worked with SQL Server and other RDBMS for a
long time. That said, I'm *guessing* that the stored proc solution would be
the fastest, since its execution plan is precomputed, but a quick look seems
to say that stored procs are only available in v5, still in alpha.

Of the two queries, I don't know. If this was SQL Server, I'd suggest
comparing them in the Query Profiler, with your actual data. That would give
you a look at the execution plan for each method, with the "cost" of each,
broken out into component parts. Is there a similar facility in MySQL, or
some add-on to it? I looked at EXPLAIN, but it doesn't seem to show costs.

And bottom line (you knew I'd say this, right?), Try It! With your real
data.

Dave Merrill


> What query suppose to be faster? Jan or Dave?
>
> Jan Solution:
> SELECT
> date,
> SUM(IF(CONCAT(status,id) LIKE 'received%',1,0)) as received,
> SUM(IF(CONCAT(status,id) LIKE 'send%',1,0)) as send,
> SUM(IF(CONCAT(status,id) LIKE 'cancelled%',1,0)) as cancelled
> FROM
> account
> GROUP BY date;
>
>
> On Wed, 12 Jan 2005 22:51:00 -0500, Dave Merrill wrote:
> > > I have table account (see below). I need to get count of received,
> > > count of send and cound of cancelled records. I know that I can do
> > > this in 3 queries.
> > > #1. select count(*) from account where status='received';
> > > #2. select count(*) from account where status='send';
> > > #3. select count(*) from account where status='cancelled';
> > >
> > > Is it possible to get count of each status in one query instead of 3?
> >
> > How about this:
> >
> > select
> >   (select count(*) from account where status = 'received') as
> > count_received,
> >   (select count(*) from account where status = 'send') as count_send,
> >   (select count(*) from account where status = 'cancelled') as
> > count_cancelled
> >
> > You could also build a stored proc that looped over a list of
> the values to
> > find, or, I think maybe, over the actual distinct values in the
> field. Not
> > so sure about that part.
> >
> > Dave Merrill


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to