Henry,
The information you've posted is a good start, can you post the results of 
an EXPLAIN command?  That would go a long way towards finding a solution.


--Justin


On Sun, 13 Jul 2003, Henry Hank wrote:

> 
> I have the following SQL. The source table has 8.1 million rows, and the
> resulting table will have about 7.9 million rows.  I know that's not much of a
> decrease, but the logic is correct as I've tested it on smaller sets.  The
> problem is that when I run with the full set of 8 million rows, it takes about
> 2 hours to complete.  The source and target tables are all char or tinyint
> fields (i.e. fixed length records).  
> 
> insert into extract2
>       select field1,field2,field3,field4,
>             if(right(field1,1)='N',mid(field3,2,1),mid(field3,1,1)) as flag,
>             count(*) as count,
>             val-min(val_cnt) as cnt1,
>             if(max(val)<val_cnt,1,0) as cnt2 ,
>             if(max(val)=min(val) and max(val)=val_cnt,1,0) as last,
>             if(min(val)=1,1,0) as initial
>       from extract1
>       group by field1,field2,field3,field4;
> 
> While this code is running, the temp table that is created to do the summary
> grows to 730,662,620 bytes, which is 22 million records at 33 bytes per record.
>  Why is mysql creating a temp table of 22 million records, when the SOURCE
> table is only 8.1 million records?  Even if no summary was taking place at all,
> I wouldn't expect the temp table to be almost three times the size.  
> 
> This is running on a dual 1GHZ Dell poweredge, with RH 7.2 and mysql 3.23.41,
> and there is nothing else running on the box at the same time.
> 
> Is there any way to optimize this group by so it runs faster, and doesn't
> create such a large temp table? 
> 
> Thanks,
> 
> -Henry
> 
> __________________________________
> Do you Yahoo!?
> SBC Yahoo! DSL - Now only $29.95 per month!
> http://sbc.yahoo.com
> 
> 

-- 
Sincerely,
Pantek, Inc.
Justin L. Spies

--
<[EMAIL PROTECTED]>

Pantek, Inc. - http://www.pantek.com/ - IT Services [EMAIL PROTECTED]
440-519-1802 or 1-877-LINUX-FIX


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

Reply via email to