Tietokannan suunnittelussa käytämme usein guidia tai int:tä pääavaimena, ja oppimamme tiedon mukaan olemme aina kokeneet, että int on tehokkaampi pääavaimena, mutta se on mahdotonta ilman huolellista testausta
Selitä syy. Tänään tietokannan optimoinnissa kohtasin tämän ongelman, joten tein testin.
Testiympäristö:
Pöytätietokone Pentiun(R) 4 CPU 3.06GHz Win XP -ammattilainen 1,5G DDR-MUISTI SQL Server 2005 Personal
Testausprosessi:
Luo ensin testitietokanta, Test
Testitulokset ovat seuraavat:
Kuten edellä mainittiin, int:n käyttö ensisijaisena avaimena on parempi kuin guidin käyttäminen pääavaimena, erityisesti kun yhteyskysely ja tietueiden poistaminen tapahtuu.
Lisäksi GUID:n pääavaimella varustetussa datakyselyssä kyselyn aikakatkaisu tapahtui toistuvasti useiden alikyselytulosten sisäkkäisyyden vuoksi. Siksi kannatan älykkyyden käyttöä pääavaimena, enkä ole samaa mieltä guidin käytöstä pääavaimena. Yllä olevat näkemykset edustavat henkilökohtaisia mielipiteitä, ja jokainen voi ilmaista mielipiteensä sekä selittää ohjauksen ja älykkyyden etuja ja haittoja pääavaimena.
Seurantatestit:
Veljesten muistutuksen jälkeen kahteen alitaulukkoon on lisätty ei-klusteroitu indeksi:
LUO EI-KLUSTEROITU INDEKSI Index_Detail_Guid Test_Guid_Detail(Guid) LUO EI-KLUSTEROITU INDEKSI Index_Detail_id Test_Int_Detail(id):lle Sitten tein sisäisen yhteyskyselyn ja huomasin, että kuten @Xu Shaoxia sanoi, tehokkuus ei ole tarpeeksi ilmeinen osoittamaan yli 50 %, ja käytännössä vain noin 23 % parannusta, mikä on edelleen hyväksyttävää.
Siksi sitä suositellaan
1. Järjestelmissä, joissa datan siirto usein vaatii, suositellaan käyttää Guid-ohjainta. Ja lisäämällä ei-klusteroituja indeksejä vastaaviin vierasavainkenttiin, eli liittymiskyselyihin käytettyihin kenttiin, on suuri hyöty suorituskyvyn parantamiseksi. Where-ehdon kenttä voidaan myös lisätä tarpeen mukaan ei-klusteroiduille indekseille.
2. Kun käytetään Guid-tyyppiä ensisijaisena avaimena, tietotyypin tulisi olla uniqueidentifier, ja muista peruuttaa ensisijaisen avaimen "aggregaatti-indeksi"
3. Järjestelmissä, joita ei tarvitse siirtää, tai pienille järjestelmille, on silti erittäin kätevää käyttää int:tä ensisijaisena avaimena, ja tehokkuudessa on edelleen tietty parannus.
|