Hello all,

Suppose I have 3 tables,
1. master (auto_nr, link, dat)

CREATE TABLE master 
(
auto_nr int(11) unsigned zerofill NOT NULL,
link int(11) unsigned zerofill NOT NULL,
dat DATE  NOT NULL,
PRIMARY KEY auto_nr(auto_nr),
KEY link_key(link)
)
2. child1 (auto_nr, link1, value1)

CREATE TABLE child1
(
auto_nr int(11) unsigned zerofill NOT NULL,
link1 int(11) unsigned ,
value1 int(11),
PRIMARY KEY auto_nr(auto_nr),
KEY link1_key(link1)
)

3. child2 (auto_nr, link2, value2)

CREATE TABLE child2
(
auto_nr int(11) unsigned zerofill NOT NULL,
link2 int(11) unsigned ,
value2 int(11),
PRIMARY KEY auto_nr(auto_nr),
KEY link2_key(link2)
)

At the moment I use temporary tables following way:
CREATE TEMPORARY table temp1
Select link, max(dat) as m_dat, sum(value1) as val1
from 
master
left join child1 on master.link=child1.link1
group by link

CREATE TEMPORARY table temp2
Select link, sum(value2) as val2
from 
master
left join child2 on master.link=child2.link2
group by link
//OK. Actually I use 2 steps to build one temporary
table: 
a. Full CREATE TEMPORARY TABLE statement using KEY (or
maybe better INDEX???) if needed.
b. INSERT INTO to populate created table.

FINALLY:
Select m_dat, temp1.link, val1, val2
from temp1, temp2
where temp1.link=temp2.link

 Can I do it with one select statement in mysql?

Sorry to say, I have to create up to 12 different
temporary tables to get result sets for everyday use.
As you may guess execution of bunch of queries takes
time (up to 1 min) and may be considered as rather
messy. I‘ve come to conclusion that SQL optimization
with MySql (using temporary tables) is time consuming.
IMHO I need feature called ‘CREATE VIEW …’, but
perhaps I have to learn some of features of standard
SQL (i.e. progressive & extensive use of different
JOIN types;-) so, really good SQL books regarding this
subject; your recommendations. 

My database is not large (50 tables, max 25 columns
per table, currently overall amount ~50Mb plus about
0.2-1Mb each day). I try to stick with SQL92 and keep
my client code independent from particular SQL server
implementation; maybe someday I have to shift to other
back-end, so I want to make migration to different
back-end as easy as possible. Speed penalty is
inescapable. 

My system configuration is Compaq PROLIANT ML370,
128Mb RAM, 933 Mhz PIII,  RedHat Linux 7.1. It’s dual
processor system, so some hardware upgrade is quite
possible. I have small number of clients (1-20). Any
suggestions for optimal MySql server configuration?


Any help will be appreciated. 

p.s.
 What’s the difference between KEY and INDEX in CREATE
TABLE syntax (any +/- effect on JOIN)?

Regards,
Alvis


__________________________________________________
Do You Yahoo!?
Yahoo! Sports - Coverage of the 2002 Olympic Games
http://sports.yahoo.com

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to