Sparse (SQL)

Sparse bezeichnet in Microsoft-SQL sowohl eine spezielle Spaltenkonfiguration, wie auch das Argument mittels der die Spalte dazu entsprechend konfiguriert wird.

Unabhängig von ihrem Datentyp (wie z. B. int, varchar oder date) können Spalten einer Datenbank je nach Konfiguration auch Nullwerte enthalten. Der Nullwert ergibt sich aber nicht einfach durch die fehlende Existenz eines Wertes, sondern muss explizit als Nullwert gespeichert werden. Dies geschieht bei Microsoft-SQL durch einen sogenannten Null-Bitmap. Wird bei einer Spalte davon ausgegangen, dass sie spärlich (sparse) besetzt sein wird, d. h. mehrheitlich Nullwerte enthalten wird, kann diese mittels des Arguments SPARSE NULL[1] zu einer Sparse-Spalte (engl. Sparse Column) konfiguriert werden. Eine Sparse-Spalte benötigt zur Speicherung von Nullwerten wirklich keinen Speicherplatz mehr, benötigt jedoch dafür mehr Speicher, wenn ein anderer Wert als der Nullwert gespeichert wird.

Beispiel

Eine Liegenschaftsverwaltung legt für eine neue Liegenschaft eine Tabelle für ihre Mieter an. Die Liegenschaft enthält 200 Wohnungen, aber nur 5 Parkplätze. In diesem Beispiel kann man bereits beim Erstellen der Tabelle im Voraus sagen, dass die Spalte Parkplatznummer im Minimum also 195 mal den Nullwert enthalten wird, sollten alle Parkplätze vermietet worden sein. Hier lohnt es sich daher, die Spalte Parkplatznummer als Sparse-Spalte zu konfigurieren, um Speicherplatz zu sparen.

CREATE TABLE dbo.MieterLiegenschaftXYZ
    (Vorname varchar(50) PRIMARY KEY,
    Nachname varchar(50),
    Wohnungsnummer int,
    Mietzins money,
    Parkplatznummer int SPARSE NULL ) ;

Einschränkungen

Die Verwendung von Sparse-Spalten bringt eine Reihe von Einschränkungen mit sich. Darunter die folgenden:[2]

  • Sparse-Spalten können nicht gleichzeitig als IDENTITY, ROWGUIDCOL oder NOT NULL konfiguriert werden. Wobei Letzteres als solches keinen Sinn ergeben würde.
  • Sparse-Spalten können nicht auf Spalten des Datentyps text, ntext, image, timestamp, geometry, geography oder vom Benutzer angelegte Datentypen angewendet werden.
  • Es können keine Cluster Index oder Primary Key Index auf Sparse-Spalten angewendet werden

Einzelnachweise

  1. Microsoft MSDN: CREATE TABLE Befehlsreferenz
  2. Blogspot: SQLTrends - Database and Sql Server

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.