ugrás a tartalomhoz

Milyen rekordszám és lekérdezés szám felett szerencsés indexelni minden adattáblát?

lord · 2014. Május. 18. (V), 17.03
Olvasgatok mostanában az indexelésről, de ilyen konkrét adatot nem igazán találtam. Van erre valami körül-belüli határszám? Pár mondatot írnátok erről?
 
1

1 :)

Pepita · 2014. Május. 18. (V), 18.14
Minden olyan mezőt érdemes indexelni, ami szerepel(het) lekérdezés feltételeként, vagy sorbarendezésben, stb.

Nem a rekordszám vagy a lekérdezések száma szabja meg, mindenképp így gyorsabb lesz, tehát érdemes.
2

A lekérdezés gyorsabb lesz, a

Joó Ádám · 2014. Május. 18. (V), 18.54
A lekérdezés gyorsabb lesz, a beszúrás adott esetben akár katasztrofálisan is lassulhat. Nem véletlen, hogy nem teszünk minden mezőre indexet.
4

1%

vbence · 2014. Május. 18. (V), 19.39
A kérdező valószínűleg nem olyan projekten dolgozik, ahol ez felmerül. Jó megemlíteni, hogy van az indexeknek költsége (a lemezterületen felül), de a katasztrofálisan is lassulhat (linkek nélkül) inkább elbátortalanít az indexeléstől.

Igazán átfogó dokumentumot nem ismerek a témában, de ajánlanám egyik SO-s válaszolmat néhány tudnivalóval az indexelésről.
5

Pedig ezt alá tudom

H.Z. · 2014. Május. 18. (V), 19.46
Pedig ezt alá tudom támasztani, igaz, csak a saját tapasztalatimmal, nem írásos doksival.
Az index az update jellegű műveleteket alaposan lelassítja. Két-három felesleges vagy rosszul felépített index az addig villámgyors karbantartó műveleteket úgy lelassíthatja, hogy a korábban pár perces futáshoz végül több óra kell.
Ez nem bátorság kérdése, végig kell gondolni, milyen indexeket használsz és mérlegelni kell (ha van választási lehetőség), hogy mi a rosszabb? A lelassult karbantartás vagy az index hiánya miatt lassú lekérdezések.
6

"Jó megemlíteni"

vbence · 2014. Május. 18. (V), 19.52
Jó megemlíteni, hogy van az indexeknek költsége (a lemezterületen felül)
9

A "katasztrofális"-ra

H.Z. · 2014. Május. 19. (H), 09.15
A "katasztrofális"-ra céloztam, olyat láttam a saját rendszeremben.
10

Túlzol

Pepita · 2014. Május. 20. (K), 12.22
beszúrás adott esetben akár katasztrofálisan is lassulhat
Ez azért túlzás, természetes, hogy lassabb lesz, de általánosságban sokkal több egy adatbázison (egységnyi idő alatt) a SELECT, mint az INSERT.
Nem véletlen, hogy nem teszünk minden mezőre indexet.
Az sem véletlen, hogy habár nem túl részletesen, de indokoltam, mikor teszünk. :)
11

Ez azért túlzás, természetes,

Joó Ádám · 2014. Május. 20. (K), 12.32
Ez azért túlzás, természetes, hogy lassabb lesz, de általánosságban sokkal több egy adatbázison (egységnyi idő alatt) a SELECT, mint az INSERT.


Ez csak az adat jellegétől függ. A lassulás mértéke pedig az adatmennyiségtől. Ha például intenzív logolást végzel, akkor az indexelés az írási sebességet tűrhetetlenül leronthatja. Te azt írtad, hogy mindent érdemes indexelni, ami alapján lekérdezel, de ez így nem igaz. Mérlegelni kell a körülményeket.
12

Janoszen

Pepita · 2014. Május. 20. (K), 12.45
Janoszennek van igaza: MÉRÉS (persze ha van rá kapacitás).

Igen, én is túloztam elsőre, talán mert a kérdező még sosem indexelt. Az adat jellegétől függ - egyetértünk.
3

Nem

janoszen · 2014. Május. 18. (V), 19.31
Ez így ilyen formában nem igaz, ha a kívánt eredmény kiolvasásához pl a tábla nagy részét amúgy is végig kell olvasni (pl mert a felénél több rekordot olvasol ki), akkor tök fölösleges az index. Ezen felül van egy olyan probléma is, amit úgy hívnak, hogy túlindexelés, avagy amikor már az írási sebességed szenved attól, hogy túl sok index van a táblán.

Nincs általánosan jó megoldás. A legfontosabb szabály a DB optimalizálásnál, hogy csak és kizárólag a MÉRÉS mondja meg az igazságot, a TALÁLGATÁS és az ÁLTALÁNOSÍTÁS nem.
8

Ugyanakkor mindig mindent

tgr · 2014. Május. 19. (H), 08.19
Ugyanakkor mindig mindent nincs idő megmérni. (Egy DBA többe kerül, mint egy programozó stb stb) Szerintem jó kölszabály, hogy ha elkezded a lekérdezés feltételeit egyesével alkalmazni, a legszelektívebbel indítva; akkor kevesebb mint 50%-kal csökkenti a rekordok számát, vagy aminek pár az alkalmazása előtt is kevés rekord volt, arra felesleges az index, a többire rá lehet tenni.
7

Vannak ökölszabályok

tisch.david · 2014. Május. 18. (V), 21.56
Kedves Lord!

Szerintem első körben az ID-ket tedd elsődleges kulccsá a táblákban, és ha valamelyik táblában hivatkozol ilyen ID-kre, akkor ott is tedd azt a mezőt külső kulccsá.

Második lépésben érdemes a szűrésben vagy sorba rendezésben gyakran részt vevő mezőkre kompozit kulcsot tenni.

Harmadik lépésben a lassú lekérdezéseket érdemes optimalizálni, akár indexek bevezetésével is.

Üdv:

Dávid