Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Qexer
HV vaatleja

liitunud: 06.04.2011
|
08.01.2012 02:19:44
MySQL suure tabeli jõudluse parandamine struktuuri muutes |
|
|
MySQL 5.1.58 andmebaasis on tabel ~160 000 sisestust ja kuskil 13mb suur ning see sisaldab artiklite seotust riikidega.
Artikleid on andmebaasis kokku 2000 ja riike umbes 240. Tabeli struktuur on hetkel järgmine:
(itemid on artikli id, name on riigi lühend):
id itemid name
1 32 et
2 32 en
....
160k 2000 fr
|
Ehk siis iga riigi kohta on eraldi rida kui see on antud artikliga seotud.
Küsimus, kas selline struktuur on jõudluse ja päringute kiiruse mõttes parim valik?
Või on näiteks selline struktuur tõhusam?
id itemid name
1 32 et,en,fr
2 33 en,br,ba
3 34 en,lv,lt,et,pl
|
Olgu öeldud, et hiljem peab saama artikleid järjestada ka riikide alusel.
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
mirko27
HV veteran

liitunud: 29.06.2002
|
08.01.2012 03:19:26
|
|
|
160k rea puhul pole vahet milline su struktuur on. Normaliseerida võid siiski andmeid, eraldi tabel riikide jaoks ja foreign key itemite tabelisse. Vastavalt päringutele valid korretksed indeksid ja on hüva.
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
Qexer
HV vaatleja

liitunud: 06.04.2011
|
08.01.2012 04:13:59
|
|
|
Aga kui kasutada seda teist varianti, siis tuleks ridu sama palju kui artikleid ehk 2000. Siit tulebki küsimus, kas see on jõudluse/mõtekuse poolest parem ja kas see võimaldab artiklite kuvamise riikide järgi hiljem.
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
Timukas0
HV kasutaja

liitunud: 20.03.2007
|
08.01.2012 04:50:18
|
|
|
Teine võimalus väga kehv. Kõik kirjed tuleb ükshaaval läbi käia ja alamstringi otsida. Kui iga seos on eraldi, saab kasutada indekseid ja tulemus nii kiiruse kui ka kasutatavuse poolest tunduvalt parem.
|
|
Kommentaarid: 3 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
3 |
|
tagasi üles |
|
 |
Qexer
HV vaatleja

liitunud: 06.04.2011
|
08.01.2012 13:56:05
|
|
|
Timukas0, ehk siis mõtled esimest võimalust, aga riikide jaoks eraldi tabel prefixite ja nimega?
id itemid country
1 32 1
2 32 2
....
160k 2000 240 |
ja riikide tabel
id prefix name
1 et Eesti
2 en Inglismaa
....
240 fr Prantsusmaa |
Kokkuvõtteks jääks siis esimene tabel ikkagi väga suur ja lisanduks päringute tegemisse ka teine tabel, mille abil riike kätte saada.
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
mirko27
HV veteran

liitunud: 29.06.2002
|
08.01.2012 14:25:34
|
|
|
Saa aru, et su tabel ei ole suur. 160k rida on äärmiselt väike tabel. Teiseks on antud tabelid seotud läbi indeksi, mis on kiireim viis andmete pärimiseks. Rääkimata andmete normaliseerimisest, mis on niiehknaa mõistlik.
|
|
Kommentaarid: 12 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
11 |
|
tagasi üles |
|
 |
Qexer
HV vaatleja

liitunud: 06.04.2011
|
08.01.2012 14:35:06
|
|
|
Selge, tänan seljuhul!
|
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|