SQL, jól működő adatbázis?
Sziasztok, mennyivel jobban működik egy adatbázis, ahol például a felhasználóhoz tartozó tulajdonságokat nem név szerint (minden névből csak 1 lehet), hanem a felhasználó egyedi ID-je szerint társítjuk?
Pl. melyik a jobb:
WHERE Nev='Kovacs Istvan'
WHERE Felh=55266
Érdemes átszerkesztenem az adatbázisomat, vagy mostantól a szám szerinti azonosításra áttérnem, és később az egész adatbázist átírni, vagy nincs nagy különbség? (Csak mert pl. ha név szerint van társítva, akkor könnyebb eligazodni az adatbázisban)
Itt olvashatsz egy kis tesztet is erről:
Megdöbbentő, ez hogy lehetséges?
Hiszen 1 karakter 1 bájt, míg 1 bájton 255-ig lehet elszámolni. Szóval miért nem könnyebb a 243-as id-jűt megtalálni, mint a KovacsPisti felhasználónevet?
Egyrészt az a teszt semmit sem ér mert nem ugyan azt a lekérdezést állítja egymással szembe. Az elsőben simán a "ProjectManagement.Issues" oszlopait kérdezi le, a másodikban pedig egy halom INNER JOIN művelet eredményének oszlopait. És mint tudjuk, az INNER JOIN költséges művelet.
Valójában nincs nagy teljesítmény különbség, és elvileg az int egy picivel gyorsabb. Ugyan implementáció függő de valószínűleg a kulcsok átmennek egy hash függvényen és onnantól kezdve ugyan úgy vannak lekezelve (optimalizációt és keresőtáblát leszámítva). A hashelés számítási költségében lehet egy apró eltérés, de elenyésző a lemez olvasási sebességéhez képest.
És az eredeti kérdésedre is válaszolva: a kulcs legyen egyedi és ne lehessen megváltoztatni. A felhasználónév lehet hogy egyedi, de mi van ha meg akarod változtatni a felhasználó neved? Embereknél a személyi szám is egyedi de meg szokott változni bizonyos időközönként. Ezért használnak inkább ID-t. Ha biztos nem kell majd megváltoztatni a mezőt akkor lehet kulcs. Azt használd ami kényelmesebb, vagy értelmesebb.
Tényleg, erre nem gondoltam. Ebből a szempontból tényleg hasznosabb lenne az ID.
De igazából ez is megoldható, csak annyi az egész, hogy minden hozzátartozó dolognál is megváltoztatom a nevét.
És cserébe átlátható a DB.
Csak elmesélem neked, mivel foglalkozom mostanában.
Két adatbázis 1-1 tábláját kell összehoznom úgy, hogy nemcsak külön-külön kell egyedinek lenni a felhasználónévnek, hanem együtt a kettőben is. Érted, két külön adatbázis. Regisztrációnál, módosításnál le kell csekkolni, hogy a másik adatbázisban foglalt-e a név. Természetesen most pár tucat nevet meg kell változtatnom, mert már van ütközés. Természetesen ezeknek a rekordjait az auditokban, biztonsági másolatokban, régebben mentett táblázatokban utólag is be kell tudni azonosítani! Erre 5-8 éve, mikor ezek készültek, senki nem gondolt.
Hát így. Remélem, értesz belőle.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!