Az adatbázis tervezése során gyakran használjuk a guid vagy int fő kulcsot, és a tanult tudás alapján mindig is úgy éreztük, hogy az int hatékonyabb fő kulcsként, de ez lehetetlen gondos tesztelés nélkül
Magyarázd el az okát. Ma az adatbázis optimalizálása során találkoztam ezzel a problémával, ezért teszteltem.
Tesztkörnyezet:
Asztali PC Pentiun(R) 4 CPU 3.06GHz Win XP profi 1,5G DDR RAM SQL Server 2005 Personal
Tesztelési folyamat:
Először hozz létre egy tesztadatbázist, tesztelj
A teszteredmények a következők:
Ahogy fentebb említettük, az int elsődleges kulcsként való használatának hatékonysága javul, mint a guid fő kulcsként való használata, különösen, ha kapcsolati lekérdezés és rekordok törlése van.
Ráadásul a GUID fő kulcsával ellátott adatlekérdezésnél ma ismételten előfordult a lekérdezés időkérése, mivel több al-lekérdezési eredmény beágyazódott. Ezért támogatom, hogy az int fő kulcsként használjuk, és nem értek egyet a guid fő kulcsként. A fent említett nézetek személyes véleményeket képviselnek, és mindenki szívesen látott kifejezni véleményét, valamint elmagyarázni a vezető és int előnyeit és hátrányait, mint a fő kulcsot.
Utódvizsgálatok:
A testvérek emlékeztetésére ma két altáblázathoz hozzáadtak egy nem klaszterezett indexet:
NEM KLASZTEREZETT INDEX Index_Detail_Guid létrehozása Test_Guid_Detail(Guid)-on NEM KLASZTEREZETT INDEX Index_Detail_id LÉTREHOZÁSA A Test_Int_Detail(id)-EN Ezután belső kapcsolati lekérdezést végeztem, és azt találtam, ahogy @Xu Shaoxia mondta, a hatékonyság valóban nem elég nyilvánvaló ahhoz, hogy 50%-nál többet jelezzen, és gyakorlatilag csak körülbelül 23%-os javulást jelezhet, ami még mindig elfogadható.
Ezért ajánlott
1. Olyan rendszerekben, amelyeknek gyakran szükség van adatmigrációra, ajánlott a Guid használata. És a nem klaszterezett indexek hozzáadása a megfelelő idegen kulcsmezőkhöz, azaz a csatlakozási lekérdezésekhez használt mezőkhöz, nagy előnyt jelent a teljesítmény javítása érdekében. A where feltétel mezője is hozzáadható a nem klaszterezett indexekhez.
2. Amikor a Guid típust használjuk elsődleges kulcsként, az adattípusnak uniqueidentifiernek kell lennie, és ne felejtsd el törölni az elsődleges kulcs "aggregált indexét"
3. Olyan rendszereknél, amelyeket nem kell migrálni, vagy kisebb rendszereknél, továbbra is nagyon kényelmes az int elsődleges kulcsként használni, és a hatékonyságban is van némi javulás.
|