Witam,

W portalu który aktualnie przygotowuje występuje co następuje:

4 tabele:
offers (około 90tys rekordów aktualnie), strukruta ponizej w duzym uproszczeniu:
id
make_id
model_id
user_id

users (tu jest narazie tylko jeden rekord - tym bardziej sie martwie)
id
logi
offersactive(enum 1/0)

makes
id
name

models
id
name


  1. SELECT l.id, l.make_id, l.model_id, l.derivative_id, l.initial_payment, l.period, l.annual_mileage, l.FOR, l.price, m.name AS make, models.name AS model, d.name AS derivative FROM offers l LEFT JOIN makes m ON l.make_id = m.id LEFT JOIN models models ON l.model_id = models.id LEFT JOIN nccms_derivatives d ON l.derivative_id = d.id JOIN nccms_users u ON u.id = l.user_id AND u.offersactive = 1 ORDER BY l.expiration_time ASC LIMIT 0, 30

explainik:
Kod
id       select_type       table       type       possible_keys       key       key_len       ref       rows       Extra
1     SIMPLE     u     ref     PRIMARY,offersactive     offersactive     4     const     1     Using where; Using temporary; Using filesort
1     SIMPLE     l     ref     user_id     user_id     4     usr_wantacar_1.u.id     41953     Using where
1     SIMPLE     m     eq_ref     PRIMARY     PRIMARY     4     usr_wantacar_1.l.make_id     1     
1     SIMPLE     models     eq_ref     PRIMARY     PRIMARY     4     usr_wantacar_1.l.model_id     1     
1     SIMPLE     d     eq_ref     PRIMARY     PRIMARY     4     usr_wantacar_1.l.derivative_id     1


klucze pozakładane, przy zawężeniu przynajmniej do jakiejś marki, wszystko dziala cacy (zapytanie ponizej 0.3 sekundy).

Niestety gdy chce wybrać 30 rekordów ze wszystkich - a nie moge wyeliminować ze uzytkownicy nie beda przeszukiwać po wszystkich ofertach - potrzebuje wlasnie pobrac takie 90k rekordów i przesortować po np. nazwie marki (która jest joinowana).

Maszyna na której bedzie to stało to 64bitowy Opteron 148, 3 giga ramu, i dysk w raidzie.

my.cnf nie przedstawiam nawet, bo namieszałem w nim (probowalem z rozmiarem bufora sortowania) i nic dobrego z tego nie wynikło (czas zapytania z 7 sekund spadł do 5,5).

Na które dyrektywy zwrócić uwagę przy konfiguracji mysqla? Ew jak przyoptymalizować to zapytanie? (ja nie widze juz mozliwosci)

dodam jeszcze wersje mysqla
Kod
MySQL 4.1.11-Debian_4sarge7-log uruchomiony na localhost, użytkownik...