2010. szeptember 17., péntek

Foreign key - Index

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.

Nincsenek megjegyzések:

Megjegyzés küldése