Gisteren was ik op de SQL Zaterdag en hoorde een van de sprekers iets zeggen waar ik nog nooit over had nagedacht. Namelijk dat het in sommige situaties misschien handig kan zijn om kolommen met veel data (varchar(8000), varchar(max), varbinary, etc) op te slaan in een andere tabel welke een 1:1 relatie heeft met de originele tabel.
Dit zou als voordeel bieden dat een table-scan veel sneller uitgevoerd zou kunnen worden, omdat de kolom met veel data dan niet hoeft worden bekeken en er dus meer records in een page kunnen worden geplaatst, wat de performance ten goede zou kunnen komen. Hier zit natuurlijk wat in.
Wanneer ik zelf een database moet ontwerpen plaats ik momenteel vaak de grote kolommen gewoon in dezelfde tabel als de overige velden. Dit hoeft natuurlijk niet, want vaak hoef je de kolommen met veel data alleen te tonen/op te vragen op de detail pagina van een item. In alle overige gevallen ben je vaak alleen geïnteresseerd in de kleinere kolommen welke FK's, id's, etc. bevatten.
Het opslaan van een grote kolom in een andere tabel kost natuurlijk wel iets meer bij het ophalen van de data (extra join noodzakelijk).
Zijn er hier mensen die een dergelijke opzet gebruiken en is dat dan om performance redenen? Het komt de duidelijkheid van je database vaak niet ten goede denk ik.
Dit zou als voordeel bieden dat een table-scan veel sneller uitgevoerd zou kunnen worden, omdat de kolom met veel data dan niet hoeft worden bekeken en er dus meer records in een page kunnen worden geplaatst, wat de performance ten goede zou kunnen komen. Hier zit natuurlijk wat in.
Wanneer ik zelf een database moet ontwerpen plaats ik momenteel vaak de grote kolommen gewoon in dezelfde tabel als de overige velden. Dit hoeft natuurlijk niet, want vaak hoef je de kolommen met veel data alleen te tonen/op te vragen op de detail pagina van een item. In alle overige gevallen ben je vaak alleen geïnteresseerd in de kleinere kolommen welke FK's, id's, etc. bevatten.
Het opslaan van een grote kolom in een andere tabel kost natuurlijk wel iets meer bij het ophalen van de data (extra join noodzakelijk).
Zijn er hier mensen die een dergelijke opzet gebruiken en is dat dan om performance redenen? Het komt de duidelijkheid van je database vaak niet ten goede denk ik.
Battle.net - Jandev#2601 / XBOX: VriesDeJ