Azt hiszem, nagyjából mindannyian tudjuk, hogy mire való a foreign key, milyen előnyei és hátrányai vannak.
Viszont ami nem mindenkinek tiszta, az az, hogy vajon ha egy táblában foreign key-ek vannak, akkor azokra kell-e index, vagy ez automatikus, vagy akkor most pontosan ez hogy is van?
A minap utánajártam, mert nekem is úgy rémlett valahonnan régről, hogy nem kell ezekre index, aztán amikor a rekordok számának növekedése elég durván befolyásolta a performanciát, gyanús lett.
A végeredmény röviden tömören:
Ha mező (ami a foreign key) szerepel lekérdezésekben, join-okban, illetve ha törlünk a táblából (itt nagyon durván lassú ha nincs index, a full table scan és a lock miatt), akkor mindenképpen kell tenni rá egy indexet, mert ha nincs, brutál lassú lesz a törlés és a lekérdezés. Kicsivel több idő ugyan beszúrni, de mindenképpen "visszahozza" azt az időt.
Egy részletesebb leírás és magyarázatok:
http://searchoracle.techtarget.com/tip/Should-foreign-keys-be-indexed
Aztán ha az ember ügyes, akkor tud írni olyan scripteket, ami lekérdezi az adatbázisból azokat a foreign key mezőket amelyeken nincs index, és lehet trükközni hogy generálunk index létrehozó scripteket, ebbe annyira nem mentem bele, de a gugli jó barát.
2010. szeptember 17., péntek
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése