Korzystanie z zestawów kolumny
Tabel używających sparse kolumn można wyznaczyć zestaw kolumn do zwrócenia wszystkich sparse kolumn w tabela.Zestaw kolumn jest bez reprezentacji XML, który scala sparse kolumna tabela w strukturze danych wyjściowych.Zestaw kolumn przypomina kolumna obliczeniowa w zestawie kolumn nie jest fizycznie przechowywane w tabela.Zestaw kolumn różni się od kolumna obliczeniowa, w tym zestaw kolumn jest aktualizowalna bezpośrednio.
Należy rozważyć korzystanie z zestawów kolumna, gdy liczba kolumn w tabela jest duża i działania na nich indywidualnie jest wygodna.Aplikacje mogą być widoczne niektóre poprawy wydajności wybierz i Wstaw dane przy użyciu zestawów kolumna z tabelami zawierającymi wiele kolumn.Jednak wydajność kolumna zestawy można zmniejszyć liczbę indeksów są zdefiniowane w kolumnas w tabela.Jest tak, ponieważ zwiększa ilość pamięci wymaganej dla planu wykonania.
Aby zdefiniować zestaw kolumn, użyj <column_set_name> słowa kluczowe dla ALL_SPARSE_COLUMNS wCREATE TABLE lub ALTER TABLE sprawozdania.
Wskazówki dotyczące używania zestawów kolumny
Korzystając z zestawów kolumna, należy wziąć pod uwagę następujące wskazówki:
Jako część tej samej instrukcja można dodać kolumna sparse i zestaw kolumn.
zestaw kolumn Nie można zmienić.Aby zmienić kolumna zestawu, należy usunąć i ponownie utworzyć zestaw kolumn.
Nie można dodać zestaw kolumn do tabela, jeśli tabela już zawiera rozrzedzone kolumna.
A zestaw kolumn mogą być dodawane do tabela, która nie zawiera żadnych kolumn rozrzedzony.Jeśli kolumna sparse później są dodawane do tabela, będą wyświetlane w zestaw kolumn.
Tylko jeden zestaw kolumn tabela.
A zestaw kolumn jest opcjonalny i nie jest wymagana do używania sparse kolumn.
Ograniczenia lub wartości domyślne nie mogą być definiowane na zestaw kolumn.
Obliczane kolumna nie mogą zawierać zestaw kolumn kolumna.
Kwerend rozproszonych nie są obsługiwane na tabele zawierające kolumna ustawia.
Replikacja nie obsługuje zestawów kolumna.
Zmiana przechwytywania danych nie obsługuje zestawów kolumna.
A zestaw kolumn nie może być częścią wszelkiego rodzaju indeksu.Obejmuje to widoki indeksowane, indeksy pełnotekstowe i indeksy XML.Nie można dodać zestaw kolumn jako kolumna zawarte w dowolnym indeksu.
Zestaw kolumn nie można używać w filtrze wyrażenie filtrowane indeksu lub przefiltrowane statystyki.
Kiedy widok zawiera zestaw kolumn, kolumna wyświetlany w widoku jako kolumnie XML.
A zestaw kolumn nie można uwzględnić w definicji indeksowany widok.
Widoków partycji, które zawierają tabele zawierające zestawy kolumn są aktualizowalna podzielonym na partycje widoku Określa nazwę kolumna rozrzedzony.Widokiem podzielonym na partycje nie jest aktualizowalny, gdy odwołuje się on zestaw kolumn.
Kwerendy powiadomień, które odnoszą się do zestawów kolumna nie są dozwolone.
Dane XML ma limitu rozmiaru 2 GB.Połączonych danych wszystkich niepustych kolumn sparse w wierszu przekracza ten limit, kwerendy lub następną operację DML MAJĄCĄ powoduje wygenerowanie błędu.
Aby uzyskać informacje dotyczące danych zwróconych przez funkcja COLUMNS_UPDATED, zobacz Przy użyciu kolumn Sparse.
Wytyczne dotyczące wyboru z kolumny zestawu danych
Należy wziąć pod uwagę następujące wskazówki dotyczące wybierania danych z zestaw kolumn:
Zestaw kolumn jest koncepcyjnie, typ aktualizowalny, obliczanej kolumna XML, agregujący zestaw podstawowej relacyjnej kolumn w pojedynczym reprezentacji XML.zestaw kolumn Obsługuje tylko właściwość ALL_SPARSE_COLUMNS.Ta właściwość jest używana wartość zagregowana wszystkich niepustych wartości ze wszystkich kolumn sparse dla konkretnego wiersza.
W SQL Server Management Studio tabela Edytor kolumny zestawy są wyświetlane jako editabela pole XML.Definiowanie kolumna ustawia w formacie:
<column_name_1>value1</column_name_1><column_name_2>value2</column_name_2>...
Przykłady zestaw kolumn wartości są następujące:
<sparseProp1>10</sparseProp1><sparseProp3>20</sparseProp3>
<DocTitle>Bicycle Parts List</DocTitle><Region>West</Region>
Sparse kolumn zawierających wartości null są pominięte w reprezentacji XML dla zestaw kolumn.
Przestroga |
---|
Dodawanie zestaw kolumn zmienia zachowanie wybierz * kwerend.Kwerenda zwróci zestaw kolumn jako kolumna XML i zwraca poszczególnych kolumn rozrzedzony.Schemat projektantów i deweloperów oprogramowania należy uważać, aby nie przerwać istniejące aplikacje. |
Wstawianie lub modyfikowanie danych w zestawie kolumn
Manipulowanie danymi z kolumna rozrzedzona może być wykonywana przy użyciu nazwy pojedynczych kolumn lub odwołanie do nazwy zestawu kolumn i określając wartości kolumna, ustawić przy użyciu formatu XML zestaw kolumn.kolumna rozrzedzone mogą występować w dowolnym porządku, kolumna XML.
Gdy wstawione lub zaktualizowane przy użyciu kodu XML wartości kolumna rozrzedzona zestaw kolumn, wartości, które są wstawiane do podstawowej sparse kolumn są niejawnie konwertowane z xml typu danych.W przypadek kolumn numerycznych puste XML dla kolumna numerycznej Konwertuje ciąg pusty.Powoduje to zero ma zostać wstawiona do kolumna numerycznej, jak pokazano w następującym przykładzie.
CREATE TABLE t (i int SPARSE, cs xml column_set FOR ALL_SPARSE_COLUMNS)
GO
INSERT t(cs) VALUES ('<i/>')
GO
SELECT i FROM t
GO
W tym przykładzie podano żadnej wartości dla kolumna i, ale wartość 0 został wstawiony.
Przy użyciu typu danych sql_variant
sql_variant Typ data można przechowywać wiele różnych typów danych, takich jak int, char, i date.Kolumna ustawia informacje, takie jak informacje skali, precyzji i ustawienia regionalne jest skojarzony typ danych wyjściowych sql_variant wartość jako atrybuty wygenerowanych kolumnie XML.Spróbuj dostarczyć te atrybuty XML wygenerowany niestandardowy instrukcja jako dane wejściowe dla operacji insert lub update na zestaw kolumn, niektóre z tych atrybutów są wymagane i niektóre z nich są przypisane wartości domyślne.W poniższej tabela przedstawiono typy danych i wartości domyślne, które generuje serwer, gdy nie podano wartości.
Typ danych |
Identyfikator ustawień regionalnych * |
sqlCompareOptions |
sqlCollationVersion |
SqlSortId |
Maksymalna długość |
Precision |
Skala |
---|---|---|---|---|---|---|---|
char, varchar, binary |
-1 |
"Default" |
0 |
0 |
8000 |
Nie dotyczy ** |
Nie dotyczy |
nvarchar |
-1 |
"Default" |
0 |
0 |
4000 |
Nie dotyczy |
Nie dotyczy |
decimal, float, real |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
18 |
0 |
integer, bigint, tinyint, smallint |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
datetime2 |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
7 |
datetime offset |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
7 |
datetime, date, smalldatetime |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
money, smallmoney |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
time |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
Nie dotyczy |
7 |
* Identyfikator_ustawień_regionalnych -1 oznacza domyślnych ustawienia regionalne.Angielskie ustawienia regionalne to 1033.
** Nie dotyczy = nie wartości wyjściowych tych atrybutów są podczas operacji select na zestaw kolumn.Generuje błąd, gdy określono wartość tego atrybut przez wywołującego w reprezentacji XML przewidziane zestaw kolumn w operacji insert lub update.
Zabezpieczenia
Model zabezpieczeń dla kolumna zestawu works podobne do modelu zabezpieczeń, który istnieje między tabela i kolumna.Zestawy kolumn można wywołuje jako minitable i operacji wyboru jest jak SELECT * operacji na tej minitable.Ale relacji między zestaw kolumn sparse kolumna jest relacja grupowanie zamiast ściśle kontener.Model zabezpieczeń kontrole bezpieczeństwa zestaw kolumn kolumny i honors operacji ODMÓW podstawowej sparse kolumn.Dodatkowe cechy modelu zabezpieczeń są następujące:
Uprawnienia zabezpieczeń może być udzielone i odwołane z zestaw kolumn kolumna, podobne do dowolnej kolumna w tabela.
Uprawnienie dotacji lub ODWOŁAĆ wybierz, INSERT, UPDATE, DELETE i odwołania na zestaw kolumn kolumny nie są propagowane do podstawowej kolumn element członkowski tego zestawu.Dotyczy tylko użycia zestaw kolumn kolumny.ODMÓW uprawnień na zestaw kolumn są propagowane do podstawowej sparse kolumnach tabela.
Wykonywanie instrukcji SELECT, INSERT, UPDATE i DELETE na zestaw kolumn kolumny wymagają, że użytkownik ma odpowiednie uprawnienia na zestaw kolumn kolumny i odpowiednich uprawnień sparse kolumn w tabela.Ponieważ zestaw kolumn reprezentuje sparse kolumn w tabela, trzeba mieć uprawnienie sparse kolumn i obejmuje sparse kolumn, które mogą nie być zmianie.
Wykonywanie Instrukcja REVOKE na kolumna rozrzedzona lub kolumny określić domyślne ustawienia zabezpieczeń ich obiektu nadrzędnego.
Przykłady
W poniższych przykładach tabela dokument zawiera wspólny zestaw kolumn DocID i Title.Grupy produkcji chce ProductionSpecification i ProductionLocation kolumna dla wszystkich dokumentów produkcji.Zespół marketingu chce MarketingSurveyGroup kolumna dla dokumentów handlowych.
A.Tworzenie tabela zawiera kolumnęzestaw
Poniższy przykład tworzy tabela, która używa sparse kolumn i obejmuje zestaw kolumn SpecialPurposeColumns.Przykład wstawia dwóch wierszy do tabela, a następnie wybiera dane z tabela.
Ostrzeżenie
Ta tabela ma tylko pięć kolumn, aby ułatwić wyświetlanie i przeczytać.
USE AdventureWorks2008R2;
GO
CREATE TABLE DocumentStoreWithColumnSet
(DocID int PRIMARY KEY,
Title varchar(200) NOT NULL,
ProductionSpecification varchar(20) SPARSE NULL,
ProductionLocation smallint SPARSE NULL,
MarketingSurveyGroup varchar(20) SPARSE NULL,
MarketingProgramID int SPARSE NULL,
SpecialPurposeColumns XML COLUMN_SET FOR ALL_SPARSE_COLUMNS);
GO
B.Wstawianie danych do tabela przy użyciu nazw kolumn sparse
Następujące przykłady wstawić dwa wiersze do tabela, która jest tworzona w przykładzie A.Przykłady nazw kolumn sparse i odwołuje się do zestaw kolumn.
INSERT DocumentStoreWithColumnSet (DocID, Title, ProductionSpecification, ProductionLocation)
VALUES (1, 'Tire Spec 1', 'AXZZ217', 27)
GO
INSERT DocumentStoreWithColumnSet (DocID, Title, MarketingSurveyGroup)
VALUES (2, 'Survey 2142', 'Men 25 - 35')
GO
C.Wstawianie danych do tabela przy użyciu nazwy kolumnazestaw
Poniższy przykład wstawia trzeci wiersz do tabela, która jest tworzona w przykładzie A.To czas nie są używane nazwy kolumn rozrzedzony.Zamiast nazwy zestaw kolumn jest używana i Wstaw dostarcza wartości dla dwóch z czterech kolumn sparse w formacie XML.
INSERT DocumentStoreWithColumnSet (DocID, Title, SpecialPurposeColumns)
VALUES (3, 'Tire Spec 2', '<ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>')
GO
D.Przestrzegając wyniki zestaw kolumn przy wybraniu * jest używany
Poniższy przykład wybiera wszystkie kolumny z tabela zawierającej zestaw kolumn.Zwraca kolumna XML z połączone wartości kolumn rozrzedzony.Indywidualnie nie zwraca kolumny rozrzedzony.
SELECT * FROM DocumentStoreWithColumnSet ;
Oto zestaw wyników.
DocID Title SpecialPurposeColumns
1 Tire Spec 1 <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>
2 Survey 2142 <MarketingSurveyGroup>Men 25 - 35</MarketingSurveyGroup>
3 Tire Spec 2 <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>
E.Przestrzegając wyniki zaznaczania zestaw kolumn według nazwy
Ponieważ dział produkcji nie jest zainteresowana gospodarczego danych, w tym przykładzie dodaje WHERE klauzula ograniczyć dane wyjściowe.W przykładzie użyto nazwy zestaw kolumn.
SELECT DocID, Title, SpecialPurposeColumns
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Oto zestaw wyników.
DocID Title SpecialPurposeColumns
1 Tire Spec 1 <ProductionSpecification>AXZZ217</ProductionSpecification><ProductionLocation>27</ProductionLocation>
3 Tire Spec 2 <ProductionSpecification>AXW9R411</ProductionSpecification><ProductionLocation>38</ProductionLocation>
F.Przestrzegając wyniki zaznaczania kolumn sparse według nazwy
Gdy tabela zawiera zestaw kolumn, można nadal kwerendy tabeli przy użyciu nazw poszczególnych kolumn, jak pokazano w następującym przykładzie.
SELECT DocID, Title, ProductionSpecification, ProductionLocation
FROM DocumentStoreWithColumnSet
WHERE ProductionSpecification IS NOT NULL ;
Oto zestaw wyników.
DocID Title ProductionSpecification ProductionLocation
1 Tire Spec 1 AXZZ217 27
3 Tire Spec 2 AXW9R411 38
G.Aktualizowanie tabela za pomocą kolumnyzestaw
Poniższy przykład aktualizuje rekord trzeciego nowe wartości dla obu sparse kolumn, które są używane przez ten wiersz.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification><ProductionLocation>38</ProductionLocation>'
WHERE DocID = 3 ;
GO
Ważne: |
---|
Instrukcja UPDATE, który używa zestaw kolumn aktualizuje wszystkie sparse kolumna w tabela.Sparse kolumn, które nie są aktualizowane do wartości NULL. |
Poniższy przykład aktualizuje trzeciego rekordu, ale tylko określa wartość jednej z dwóch kolumn zaludnionych.Druga kolumna ProductionLocation nie jest uwzględniony w UPDATE instrukcja i aktualizowane na NULL.
UPDATE DocumentStoreWithColumnSet
SET SpecialPurposeColumns = '<ProductionSpecification>ZZ285W</ProductionSpecification>'
WHERE DocID = 3 ;
GO