dlaczego nie jest możliwy dostęp do danych bezpośrednio z tabeli odrzucającej B-drzewa? (najprawdopodobniej poprzez skanowanie tabeli wiersz po wierszu) czy nie byłoby to w ogóle bardziej odpowiednie niż niedostępne dane?
Aby odpowiedzieć na twoje pytanie, przydaje się podstaw indeksowania - Indeks składa się z zestawu stron (węzłów indeksowych) zorganizowanych w strukturę B-drzewa. Struktura ta ma charakter hierarchiczny, z węzłem głównym na górze hierarchii i węzłami liści na dole. Aby uzyskać więcej informacji, patrz tutaj .
Ponadto, jak wiele osób opisało, indeksy klastrowe == oryginalne tabele, które są fizycznie uporządkowane z jednym lub większą liczbą kluczy lub kolumn. Kiedy indeks klastrowany jest wyłączony, nie można uzyskać dostępu do jego wierszy danych. Nie będziesz w stanie wstawić żadnych danych (w przypadku indeksu nieklastrowanego wstawianie zakończy się powodzeniem - ale nie jest to całkowicie związane z tym postem - ponieważ tutaj jest dyskusja o indeksie klastrowanym), ani żadna operacja reorganizacji nie będzie działać.
Poniżej szczegółowo wyjaśnię:
użyjemy bazy danych Adventureworks, aby zobaczyć efekt wyłączenia indeksu CLUSTERED .
Teraz sprawdź liczbę wierszy w tabeli:
Teraz wyłącz Indeks klastrowy
Teraz wybierz liczbę wierszy z tabeli. Tym razem wystąpi błąd z komunikatem poniżej:
Nawet operacja reorganizacji nie działa !!
Teraz odbuduj Indeks klastrowany i powinien on działać poprawnie.
Wybierz tabelę, aby zobaczyć, czy możemy uzyskać dostęp do danych
Więc sedno jest takie, że jeśli wyłączymy Indeks klastrowany, Dane w tabeli nadal będą istnieć, ale nie będą dostępne dla niczego poza operacjami Drop lub REBUILD. Wszystkie powiązane niesklastrowane indeksy i widoki będą niedostępne, a także klucze obce odnoszące się do tabeli zostaną wyłączone i tam, prowadząc FAILURE dla wszystkich zapytań odnoszących się do tabeli.
Uwaga: Nie ma opcji WŁĄCZENIA Indeksu. Musisz go ODBUDOWAĆ.