Kezdőoldal » Számítástechnika » Programozás » Mysql - Egy táblában 200...

Mysql - Egy táblában 200 millió rekordom van, egy query több mint 12 percig tart. Hogyan gyorsítanátok meg?

Figyelt kérdés
2015. dec. 25. 11:29
1 2
 1/11 anonim ***** válasza:
100%

Megfelelő mezők indexelesevel, storage engine megfelelő kivalasztasaval, adatbázis SSD-re pakolasaval.


És persze, mindenekelőtt optimális lekerdezessel. Ha 5 join van benne meg 8 agregator függvény, akkor ne is remenykedj. :)

2015. dec. 25. 11:59
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:
már miért lenne baj a join?..
2015. dec. 25. 16:52
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
Nem azt mondta, hogy baj a join. Hanem azt, hogy lassítja a lekérdezés futási idejét.
2015. dec. 25. 18:06
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:
Szerintem nem számottevően. Ellenben egy subselect, ami mind a 200 millió rekordra lefut.. :DD
2015. dec. 25. 20:47
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
100%
Ez így elég csekély információ, semmi infó a tárolt adatok típusáról, és hogy milyen query fut le 12 perc alatt.
2015. dec. 25. 21:05
Hasznos számodra ez a válasz?
 6/11 A kérdező kommentje:
Két mező van a táblábamban, egy INT(9) és egy VARCHAR(128) típusú mező. Valamint a SELECT query tart 12 percig.
2015. dec. 26. 05:09
 7/11 anonim ***** válasza:

Hol van az adatbázis? Mekkora az eredményhalmaz?

Mondjuk nem lehet, hogy a 20-30 GB-os táblából elkéred a 20% rekordot, aztán egyszerűen annyi, míg letölti az eredményt a szerveredről, amiről még azt se mondtad meg, hogy távoli gépen van, vagy a sajátodon?

2015. dec. 26. 14:07
Hasznos számodra ez a válasz?
 8/11 anonim ***** válasza:

Mondjuk ekkora táblánál már érdemes külön táblákba rendezni az adataidat valamilyen közös jellemző alapján - több tíz (vagy inkább olyan száz) GB átnézése semmilyen technikával nem lesz meg 50ms alatt - de ha pl neveket tárolsz (vagy emaileket, vagy bármi ilyesmit) benne, akkor kezdőbetű alapján létrehozhatsz külön táblákat, és kapásból jelentősen gyorsabb a lekérdezés (amennyiben csak adott névcsoportban akarsz keresni).


De ha elárulnád, mi van a táblában, és milyen keresést valósítasz meg, talán tudnánk segíteni - bár el sem tudom képzelni, hogy hozzáértés hiányában milyen adataid lehetnek 200 milliós rekordszámban :D

2015. dec. 26. 14:14
Hasznos számodra ez a válasz?
 9/11 anonim ***** válasza:

@Sir Butcher


Ha szétszeded a táblákat kezdőbetű alapján, akkor feltételezed, hogy tudod, melyikben kell keresni, azaz megnézed a kezdőbetűt, és az alapján keresel.


Nem ugyanerre való az adatbázis-szoftver? Ha az adott mező szerint van rendezve, vagy van rajta index, akkor szerintem ez kapitális nagy baromság.

2015. dec. 26. 15:40
Hasznos számodra ez a válasz?
 10/11 anonim ***** válasza:
Készázmillió, nagy eséllyel indexeletlen rekordnál nem feltétlenül fog ABC rendben keresni, pláne, hogy ha a tábla rendezetlen (és gyanítom az) akkor egy szétszedett táblánál kapásból átlagosan huszonhatodnyival kevesebb adatot kell átnyálazni, míg a rendezetlen táblán egy sok-sok gigányi adaton kell átmennie, ahol nem nagyon lesz semmilyen optimalizálás.
2015. dec. 26. 18:39
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!