Pereiti prie turinio

MySQL 3 Dideliu lenteliu optimizavimas


Rekomenduojami pranešimai

Turiu 3 dideles lenteles:

 

Advertisements ( ad_id, active )

Advertisements_data ( ad_id, field_id, value_int )

Forms_Data ( item_id, item_name )

 

Dabartinis veikimas:

 

1. Randame aktyvius visus ad_ids iš Advertisements pagal active;

2. Randame rezultata su query

"Select Advertisements_Data AD LEFT JOIN Forms_Data FD on AD.value_int = FD.item_id

WHERE A.ad_id IN ( ad_ids ) + ( kiti filtrai AD ir FD ) ".

 

Anksciau:

Anksciau buvo 3 lenteles viename query.

 

Problema:

Kai randa daug ad_ids #1, tai query #2 tampa didziule.

Ir siaip ilgai krauna.. kartais krauna po >2 min

 

P.S. Jeigu reikes, uz pagalba sumokesiu.

Redagavo Losev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ką darai su tais gautais duomenimis, kažkokius veiksmus ar tik atvaizduoji? Jei tik atvaizduoji dėk selectui Limit'ą, o jei kažkokius veiksmus atlieki ir duomenys retais keičiasi kešuok sql užklausą.

Taip, atvaizdavimui.

 

Deje limituoti negaliu. Nes rezultate gaunasi atfiltruoti ad_ids.

Situos idedu i MemCached valandai. Ir page 2 arba kita rusiavima jau rodo is MemCached.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Explain:

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE A range PRIMARY,value_int,category_id,field_id,ad_id field_id 4 NULL 670112 Using where; Using temporary; Using filesort

1 SIMPLE FD eq_ref PRIMARY PRIMARY 4 A.value_int 1 Using where

Redagavo Losev
Nuoroda į pranešimą
Dalintis kituose puslapiuose

O kodėl visko nedarai vienoje užklausoje? Juk ir ad_ids ir filtravimą galima atlikti vienoje užklausoje.

 

Ir dar pasitikslinimui: problema, kad lėtai veikia, ar kad užklausa "per ilga"? :)

Leta ir per ilga.

 

Gal ir durnas klausymas, bet ar query letumas "kazkiek" nepriklauso ne query ilgumo? Tarkim 222kb ilgumo query?

 

Buvo tris viename., krove daug ilgiau.. todel buvo sprendimas isskaidyti.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

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

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...