Jump to content
php.lv forumi

Recommended Posts

Posted

problēma: esošais (acīmredzot patizlais) pieprasījums pārsniedz 5s. 

 

 

SELECT * FROM a
INNER JOIN b ON b.id = a.id
LEFT JOIN c ON c.id = b.c_id
WHERE a.u_id = 'f53c6deff44e23439d2b84d26820cec9' 
ORDER BY a.c, a.e LIMIT 0, 25;

 

kā, lūdzu,  nooptimizēt?!

 

a tabula ~ 10K, b tabula ~ 50k, c tabula ~ 100 ierakstu.

visi id varchar(32) ar indeksiem

 

paldies jau iepriekš! 

Posted (edited)

1) * vietā saliec tos laukus, kurus patiešam vajag

2) uztaisi indeksu, kura iekļāuj a.u_id (4 chari), a.id un selectā iekļaujamos laukus, ja tie nav text

3) jabūt indeksam b.id un b.c_id

4) tik nīkulīgām tabulām id vajadzētu smallint

Edited by l27
Posted

explain arī rāda, ka indeksi tiek ņemti vērā?

 

tabulu izmērs tāds, kas sāk izmest pirmos performances trūkumus.

Posted

uz id indeksa uzliec garumu 4. Ja tie ir primary key, tad noņem. No šāda pasākuma būs jēgas,  ja id pirmie 4 simboli ir daudzmaz unikāli.

Posted (edited)

varchar(32)

diemžēl ID tipus vairs mainīt nav iespējams. 

Raiņa kopotus rakstu tur mēģini sarakstīt?

Rādi redzēt, ko atgriež

 

EXPLAIN SELECT * FROM a
INNER JOIN b ON b.id = a.id
LEFT JOIN c ON c.id = b.c_id
WHERE a.u_id = 'f53c6deff44e23439d2b84d26820cec9' 
ORDER BY a.c, a.e LIMIT 0, 25;
Edited by Val
Posted

Šis ir MD5 f53c6deff44e23439d2b84d26820cec9

Tas tā, FYI.

Posted

uz id indeksa uzliec garumu 4. Ja tie ir primary key, tad noņem. No šāda pasākuma būs jēgas,  ja id pirmie 4 simboli ir daudzmaz unikāli.

ID ir primary. ko nozīmē - daudz maz unikāli?  Kāpēc ņemt nost primary?!

Posted (edited)

Nomainot php kodu tiku vaļā no viena innera, tomēr joprojām ~ 4s.

 

EXPLAIN SELECT a.id, a.t, a.e, a.u, a.r, a.w
FROM a
INNER JOIN b ON b.a_id = a.id
WHERE b.u_id = 'f53c6deff44e23439d2b84d26820cec9'
ORDER BY a.c, a.e
LIMIT 0 , 25

 

 

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE a ALL NULL NULL NULL NULL 60358 Using filesort

1 SIMPLE b ref a_id,u_id,abi a_id 98 func 1 Using where

 

`abi` ir dubultiindekss a_id un u_id

 

P.S. lauku un tabulu nosaukumi mainīti

P.S.S. tabula nogļukoja, sory

Edited by aika
Posted (edited)

ID ir primary. ko nozīmē - daudz maz unikāli?  Kāpēc ņemt nost primary?!

1) Ja visiem ierakstiem pirmie 4 simboli ir identiski, tad no indeksa uz šiem simbolim nebūs jēga

2) nav jegas no primary, ja tas ir 32 baiti garš.

Edited by l27

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...