SeeQuaLity #4 Indexes – How it works

Każdy z nas to wie, że czas mija bardzo szybko. Dopiero co zakładaliśmy ze Sławkiem niniejszego bloga, a już napisaliśmy ponad 70 postów w języku polskim i angielskim. Parę miesięcy temu postanowiliśmy również robić sesje na wybrany temat związany z platformą danych Microsoft. Sesje te przybrały formę regularnych spotkań społecznościowych – równo co dwa tygodnie spotykamy się aby omówić wybrane przez słuchaczy tematy. Moim zdaniem wszystko idzie ku lepszemu – sesje cieszą się coraz większą popularnością i mam nadzieję, że ten trend się utrzyma. Oczywiście cały czas chcemy rozwijać ten format i myślę, że w niedługim czasie będzie można uczestniczyć w sesjach online! Być może w przyszłości sesję będą również w języku angielskim tak aby poszerzyć potencjalne grono odbiorców. Póki co chciałbym opublikować slajdy z ostatniej prezentacji na temat indeksów – dziękuję wszystkim przybyłym za aktywne uczestnictwo i mam nadzieję, że wynieśliście parę użytecznych informacji. Następna sesja odbędzie się w niedługim czasie – oczywiście zostaniecie poinformowani mailowo. Dzięki!

 

 

Adrian Chodkowski
Follow me

Adrian Chodkowski

SQL geek, Data enthusiast, Consultant & Developer
Adrian Chodkowski
Follow me

11 Comments

  1. Piotr Ziuziański

    Czy sesja ta została nagrana? Prezentacja o indeksach bardzo przejrzysta i dobrze poukładana 🙂

    Reply
  2. Adrian Chodkowski (Post author)

    Owszem została nagrana – muszę tylko znaleźć czas aby ją obrobić i opublikować. Polecam śćiągnąć prezentację gdyż SlideShare nie ukazuje animacji 🙂

    Reply
  3. Gość

    Zastanowił mnie trzeci punkt na slajdzie nr 16. Napisałeś, aby tworzyć indeksy złożone, w kierunku od mniej do bardziej selektywnej kolumny. Czyli dla jakiejś tabeli zawierającej imiona i nazwiska, to polecenie miałoby postać
    CREATE INDEX ON (imie, nazwisko); Ale przecież zwykle nie rozpoczyna się szukania jakiejś konkretnej osoby poczynając od jej imienia, lecz od nazwiska, które jest bardziej charakterystyczne i od razu zawęża krąg poszukiwań. Czy w takim razie polecenie powinno wyglądać raczej tak: CREATE INDEX ON (nazwisko, imie); Czyli tworzyć indeksy w kierunku od bardziej do mniej selektywnej kolumny?

    Reply
    1. Gość

      Popsuło mi składnię poleceń. Chciałem użyć nawiasów ostrych w miejsce nazw indeksów i tabel, a w trakcie wysyłania komentarza te nawiasy zostały usunięte. Dlatego składnia wygląda na niepoprawna, proszę wziąć na to poprawkę.

      Reply
      1. Adrian Chodkowski (Post author)

        Co to znaczy? Nawiasy kwadratowe są obligatoryjnie przy definiowaniu nazw np. indeksu gdy zawiera ona słowa kluczowe lub spację. Normalnie jego nazwa nie zawiera tych nawiasów jest to jedynie wskazówka dla SQLa, że takowe, że nazwa zawiera takie a nie inne znaki.

        Reply
        1. Gość

          Nie, nie zrozumieliśmy się. Ponieważ nie pisałem tego zapytania w oparciu o jakąś realną tabelę, wiec chciałem w miejsce nazw zastosować składnię z nawiasami ostrymi (nie kwadratowymi), takimi jakie są wykorzystane przy opisywaniu definicji jakiś obiektów w T-SQL, np
          tutaj https://msdn.microsoft.com/pl-pl/library/ms188783(v=sql.110).aspx

          Reply
    2. Adrian Chodkowski (Post author)

      Selektywana to znaczy taka, która ma największy współczynnik unikalności w stosunku do wszystkich wartości. W podanym przykładzie zapewne nazwisko będzie bardziej selektywne aniżeli imię 🙂 W prezentacji jest oczywiście “literówka”.

      Reply
      1. Gość

        Acha, rozumiem. Dzięki za wyjaśnienie.

        Reply
  4. Gość

    Indeksy zwykle przedstawia się w postaci odwróconego drzewa. Poziom liści to wiersze albo wskaźniki do nich, w zależności od typu indeksu. To rozumiem. Ale co znajduje się w węzłach bliżej pnia, czyli w gałęziach? Rozumiem że tam są też te 8kb strony, ale co one zawierają? Jakie dane?

    Reply
    1. Adrian Chodkowski

      Na poziomach pośrednich znajdują się wskaźniki do poziomu niżej. Widać to na załączonej prezentacji na slajdzie nr. 10. Po prostu SQL Server przegląda Root i sprawdza, która strona pośrednia zawiera określoną wartość i przechodzi do niej, następnie na tej stronie sprawdza, który liść zawiera określoną wartość i do niego przechodzi.Na stronach wyższych niż poziom liścia znajdują się klucze indeksu zapisane właśnie na 8KB stronach.

      Reply
      1. Gość

        Teraz rozumiem. Dzięki za wyjaśnienie.

        Reply

Leave a Comment

Your email address will not be published. Required fields are marked *