Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 49

Utworzenie indeksu klastrowego (CREATE CLUSTER INDEX) powoduje przepisanie wierszy w tabeli według kolejności klucza tego indeksu.

Jak można zmienić uporządkowanie wierszy w tabeli, jeżeli już istnieje indeks klastrowy o innym kluczu niż aktualnie żądana kolejność wierszy?

 

  • Zapytał
  • @ | 07.10.2015
  • TRENER MODERATOR ALTKOM AKADEMII

Odpowiedź (1)

  • 0

Zadane pytanie ma następujące (nie wypowiedziane) aspekty:

- w serwerze Informix (podobnie jak w wielu innych serwerach baz danych) tylko jeden indeks może mieć aktywną flagę CLUSTERED;

- w wielu serwerach (w odróżnieniu od serwera Informix) nie można zmienić tej flagi i konieczne jest usunięcie takiego indeksu i utworzenie dwóch nowych indeksów (starego, jeśli był potrzebny, oraz nowego, który ma być użyty do uporządkowania wierszy w tabeli).

Serwer Informix umożliwia wydanie polecenia modyfikującego indeks w taki sposób, że kasuje (resetuje) flagę CLUSTERED:

 

ALTER INDEX <nazwa_indeksu> TO NOT CLUSTER

 

Po jego wykonaniu taki indeks dalej istnieje i jest użyteczny, ale nie jest już indeksem klastrowym. Możemy utworzyć nowy indeks klastrowy lub zmienić w odpowiedni sposób jeden z istniejących indeksów, co spowoduje przepisanie tabeli według innego porządku wierszy.

Serwer Informix obsługuje polecenie modyfikujące istniejący indeks w taki sposób, że ustawiana jest flaga CLUSTERED  i wykonywane jest przepisanie wierszy w tabeli w kolejności klucza takiego indeksu.

 

ALTER INDEX <nazwa_indeksu> TO CLUSTER

 

Poniżej przykład użycia tych poleceń wykonanych w celu zmiany kolejności wierszy w tabeli:

 

CREATE UNIQUE INDEX ix_ord ON orders (order_num);
CREATE CLUSTER INDEX ix_cust ON orders (customer_num);
. . .
ALTER INDEX ix_cust TO NOT CLUSTER;
ALTER INDEX ix_ord TO CLUSTER;

 

  • Odpowiedział
  • @ | 07.10.2015
  • TRENER MODERATOR ALTKOM AKADEMII