Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Vise where nad velikom tabelom

[es] :: MySQL :: Vise where nad velikom tabelom

Strane: < .. 1 2 3

[ Pregleda: 5440 | Odgovora: 50 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Vise where nad velikom tabelom25.09.2019. u 17:14 - pre 55 meseci
Code:

mysql [localhost:8017] {msandbox} (test) > EXPLAIN format=tree SELECT * FROM trending_overall WHERE date = 1568662153 ORDER BY overall_review_percentage DESC;
+--------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                        |
+--------------------------------------------------------------------------------------------------------------------------------+
| -> Sort: trending_overall.overall_review_percentage DESC
    -> Index lookup on trending_overall using date (date=1568662153)
 |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.09 sec)

mysql [localhost:8017] {msandbox} (test) > alter table trending_overall add key date_overallpc (`date`, `overall_review_percentage`);
Query OK, 0 rows affected (19 min 23.65 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql [localhost:8017] {msandbox} (test) > EXPLAIN format=tree SELECT * FROM trending_overall WHERE date = 1568662153 ORDER BY overall_review_percentage DESC;
+------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                        |
+------------------------------------------------------------------------------------------------+
| -> Index lookup on trending_overall using date_overallpc (date=1568662153; iterate backwards)
 |
+------------------------------------------------------------------------------------------------+
1 row in set (0.09 sec)


upit je brz sada sa ovim kompozitom i radi lepo ..

e sad ovaj sto si reko:

Code:

mysql [localhost:8017] {msandbox} (test) > EXPLAIN format=tree SELECT trending.id, trending.asin, trending.url, trending.title, trending.brand, trending.category, trending.image, trending.price, trending.likes_overall, trending.review_score, trending.review_score_overall, trending.date_found, trending.date_srapped, trending.saved, trending.date_saved, trending_overall.likes, trending_overall.review, trending_overall.overall_review_percentage as review_score_daily, trending_overall.overall_likes_percentage as likes_daily
    -> FROM trending
    -> JOIN trending_overall ON trending_overall.product_id = trending.id
    -> WHERE trending_overall.date = 1568662153
    -> ORDER BY review_score_daily DESC
    -> LIMIT 50;
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EXPLAIN                                                                                                                                                                                                                                                |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| -> Limit: 50 row(s)
    -> Nested loop inner join
        -> Index lookup on trending_overall using date_overallpc (date=1568662153; iterate backwards)
        -> Single-row index lookup on trending using PRIMARY (id=trending_overall.product_id)
 |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)


i on izgleda ok
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Vise where nad velikom tabelom25.09.2019. u 17:15 - pre 55 meseci
Code:

50 rows in set (0.05 sec)

 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Vise where nad velikom tabelom25.09.2019. u 21:43 - pre 55 meseci
evo me, sorry sto kasnim sa odgovorom

super deluje, hvala puno momci :)

sada cu da probam kod mene na live bazi i ovaj 5.7 mysql pa javljam utiske

a inace neko objasnjenje zasto sa composite radi kako treba?
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Vise where nad velikom tabelom25.09.2019. u 22:58 - pre 55 meseci
hvala puno, ovo radi kako treba i na ovoj bazi koju trenutno imam na live

ovo mi je bila bas kriticna tacka :)

jos nesto da pitam :)

imam taj CSV file i u njemu ASIN kolonu, ovo je string i to je unique za svaki proizvod

dodao sam index za ovo (trending tabela) jer moram da proverim da li proizvod vec postoji u bazi, ako postoji onda ide update a ko ne onda insert
za insert i update koristim batch

e sada ako ne postoji, a imam i history, u ovoj (trending_overall) mi treba i product_id

da ne bih isao kroz petlju jedan po jedan i da hvatam last insert id ja sam odradio ovako
u history ubacim product_id = 0 na pocetku (i ovede je batch insert) pa na kraju odradim da bih popunio product_id i kasnije mogao da spojim ove 2 tabele:
Code:

UPDATE `trending_overall` INNER JOIN `trending` ON `trending`.`asin` = `trending_overall`.`asin` SET `trending_overall`.`product_id` = `trending`.`id` WHERE `trending_overall`.`product_id` = 0;


e sada jel valja ovo ili ne?

sta me muci, da li je mozda bolje da izbacim id iz trending-a (auto increment) i da ostavim samo asin (index)?
sto se tice druge tabele, u trending_history da izbacim producti_id, dodam index nad asin i da ih spajam tako?

mislim da je mozda bolje da ovako uradim, ali me muci ovaj index (asin) koji je varchar a to nije dobro? :/
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 00:50 - pre 55 meseci
trebaju ti ta dva indexa, mysql tu ne ume da koristi index merge (tj po
dizajnu ne moze) tako da sa kompozitnim moze da koristi index prvo po
prvoj pa onda po drugoj koloni ... prvi deo indexa odradi = a drugi
ostalo ... da imas > onda ti kompozitni ne bi radio


nikako nemoj da izbacujes unique id iz te tabele
 
Odgovor na temu

Living Light

Član broj: 331540
Poruke: 6714



+1159 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 01:20 - pre 55 meseci
Citat:
bogdan.kecman: inace, u zavisnost za to koliko cesto imas taj deo

Bogdane,
Ništa vas ne razumem, ali Vas i dalje čitam, posmatram i upijam.
Nadam se da se ne ljutite zbog mog javljanja.

Ne bih da vas "deranžiram", samo nastavite tako, pametno.

Bravo, Momci !!!

(@svepomalo,
Izvini za ovaj moj "upad",
nisam mogao da se odlućim kome da se izvinem, tebi ili Bogdanu,
ali mi je Bogdan bliži zbog elektronike)

Svaka Vama Čast !

Toliko mnogo knjiga, toliko malo vremena...
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 01:21 - pre 55 meseci
nesto mi nije jasno... imam kompozitni u trending_overall (date,overall_review_percentage) ovaj deo:

Citat:
prvi deo indexa odradi = a drugi
ostalo ... da imas > onda ti kompozitni ne bi radio


ovo sve radi brzo:
Code:

select * from trending_overall where date > 1555583066 and overall_review_percentage > 5 limit 50;

select * from trending_overall where date = 1555583066 and overall_review_percentage > 5 limit 50;

select * from trending_overall where date > 1555583066 and overall_review_percentage > 5 order by overall_review_percentage DESC limit 50



i ovo mi onako maglovito: "nikako nemoj da izbacujes unique id iz te tabele" jel mislis na trending ili trending_overall?

ako mi je asin (ovo je unique) u obe tabele index zar ne bi trebalo da spoji ovo brzo? konkretno na upit:

select .... FROM trending JOIN trending_overall ON trending_overall.asin= trending.asin

hocu da ubrzam sam insert i update i da izbacim ovaj update na kraju
 
Odgovor na temu

svepomalo

Član broj: 306404
Poruke: 196



+21 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 01:27 - pre 55 meseci
@Living Light

nemas potrebe da se izvinjavas (barem meni :D) drago mi da je ova moja muka nekom interesantna i da moze da pomogne :)
 
Odgovor na temu

Living Light

Član broj: 331540
Poruke: 6714



+1159 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 02:43 - pre 55 meseci
@svepomalo,
Hvala ti !

Ako išta znaš, znaš da pogađaš! :)
-------------------------------------------------------------

Bogdan je prezauzet, ali kad ima vremena ON ne odustaje da pomogne!

I tu pomoć deli širokospktralno, samo onome ko zna sve to da upije/shvati!

Eeeh moj brajko,
da nam je da Bogdan uveče legne na 18 indigoa na krevet,
pa da ujutru ustanu 18 Bogdana.

Takvi "Maheri/Fachmann-i" nam trebaju!

Koji su uzemljeni sa obe noge sa 150mm kvadratnih, Bakarne, fino Licnaste,
i NE lupetaraju gluhhhposti kad usta otvore.

BOGDAN je TAJ !!! Veruj Mi !

pOz
Toliko mnogo knjiga, toliko malo vremena...
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 13:08 - pre 55 meseci
nisam obratio paznju sta sve ima od indexa - nemoj nikad da izbacujes PK
iz tabele, ako taj asin moze da bude PK onda ok
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.com
Via: [es] mailing liste

Sajt: mysql.rs


+2377 Profil

icon Re: Vise where nad velikom tabelom26.09.2019. u 13:25 - pre 55 meseci
@llight, branimir je ovde resio problem jos pre nego sam ja pogledao
problem od pocetka do kraja :D
 
Odgovor na temu

[es] :: MySQL :: Vise where nad velikom tabelom

Strane: < .. 1 2 3

[ Pregleda: 5440 | Odgovora: 50 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.