Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] jak działają indeksy
propage
post
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


Na jakiej zasadzie działa funkcja indeksowania.
Czy ktoś może mi logicznie wytłumaczyć jak wpływa długość indeksu na szybkość zapytań do bazy danych.
Załóżmy że mamy tabele z 1.mln rekordów.

wyszukujemy w tej tabeli po polu "IP", które ma maksymalnie 15 znaków.

Czy powinniśmy dodać indeks pełne, czy tylko na X znaków, jeśli na X znaków to na ile dokładnie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
5k7
post
Post #2





Grupa: Zarejestrowani
Postów: 65
Pomógł: 2
Dołączył: 5.12.2006

Ostrzeżenie: (0%)
-----


Więc tak - zależy o jaką bazę danych się rozchodzi. Czy jest to Mysql, Postgresql czy Oracle itp..

Problem polega na tym że adres ipv4 można zapisać jako 32bitowego inta, który się bardzo dobrze indeksuje i można dużo szybciej wyszukać dany rekord. Sama baza danych posiada wbudowane mechanizmy do przekształcania tego inta na adres ipv4. Oczywiście można również dać varchar i też go indeksować, ale jego wydajność będzie zawsze niższa. Przy ipv6 potrzeba 128 bitów, największa jednostka (Mysql) to bigint, który ma 64 bity, także do tego zadania potrzeba dwóch kolumn. Wówczas sprawa się znacznie komplikuje. I naturalnym jest poszukiwanie innego typu kolumny. Jakikolwiek by to nie był typ kolumny będzie zawsze słabszy w porównaniu do 32bitowego inta. Sam ipv6 będzie zawsze słabszy(wolniejszy) nie ważne jaką metodę się zastosuje - bo jest znacznie dłuższy.

Pytanie jest takie - czy ja dzisiaj będę w stanie zaprojektować lepszy system do przeszukiwania i przechowywania ipv6 od konstruktorów baz danych (mimo tego że przez wiele lat będzie on w ogóle nie wykorzystany) ? Oczywiście że nie. To tak samo jakbyś przerabiał auto na gaz. No jakoś leci i pracuje. A jaki będzie wynik jak konstruktor silnika będzie go specjalnie projektował pod gaz. Wynik na pewno będzie lepszy. Problem ipv6 jest odległym tematem. W poprzednich postach próbowałem wytłumaczyć dlaczego tak opornie to idzie, że mamy taki stan rzeczy. Dzisiaj nie powinno się go jeszcze stosować, ponieważ za 10 lat nie ważne jak dobry kawał roboty byś zrobił - twoja stronka czy aplikacja i tak będzie wymagała renowacji. Weźmy na tapetę znowu przykład samochodów. Czy jakikolwiek samochód wyprodukowany 10 lat temu jest lepszy od produkowanych dziś (pomijając sentymenty (IMG:style_emoticons/default/wink.gif) ) ? No jest to tak oczywiste, że nie wymaga dodatkowych objaśnień.

Dzisiaj bazy danych nie posiadają tych dobrych mechanizmów, a wynika to z tego że ich nie ciśnie po prostu, a jest dużo innych ważnych rzeczy do zrobienia.
Go to the top of the page
+Quote Post

Posty w temacie
- propage   [sql] jak działają indeksy   30.11.2011, 13:49:02
- - nospor   Sam dajesz tag SQL a umieszczasz temat w dziale PH...   30.11.2011, 13:54:11
- - 5k7   Musisz mięć adres ip zapisany jak int, żeby indeks...   30.11.2011, 16:27:39
- - propage   ok, wiem już ze trzymanie ip jako varchar jest nie...   30.11.2011, 19:48:02
- - Crozin   Po pierwsze adresu IP nie przechowuje się jako INT...   30.11.2011, 20:40:38
- - 5k7   Cytat(propage @ 30.11.2011, 19:48:02 ...   30.11.2011, 21:09:00
- - Crozin   CytatGdzię mamy ? U siebie w domu chyba. ^^ . Pod...   30.11.2011, 22:09:43
- - 5k7   Cytat(Crozin @ 30.11.2011, 22:09:43 )...   30.11.2011, 23:21:37
- - Crozin   Ale kiedy bazy danych bardzo dobrze wspierają i IP...   30.11.2011, 23:40:51
- - 5k7   Cytat(Crozin @ 30.11.2011, 23:40:51 )...   1.12.2011, 15:15:06
- - Crozin   1. To co podałem to nie funkcje, a typy kolumn do ...   1.12.2011, 15:34:05
- - 5k7   Cytat(Crozin @ 1.12.2011, 15:34:05 ) ...   1.12.2011, 17:05:34
- - Crozin   CytatNie bardzo rozumiem.I między innymi dlatego w...   1.12.2011, 17:39:34
- - 5k7   Dobra widzę, że muszę konkretniej pisać. Nie ma m...   2.12.2011, 11:11:02
- - Crozin   1. Dlaczego niby kolumny z adresem v6 miałoby się ...   2.12.2011, 18:19:56
- - 5k7   Cytat(Crozin @ 2.12.2011, 18:19:56 ) ...   2.12.2011, 18:33:15
- - Crozin   Ta sama firma zachęca również do wspierania IPv6, ...   2.12.2011, 19:48:30
- - 5k7   A zapewne dlatego że to oni przodują w technologia...   2.12.2011, 20:03:21
- - Crozin   No to teraz nie rozumiem Twojego podejścia. Piszes...   2.12.2011, 20:42:40
- - 5k7   Gdzie ja pisałem żeby sie wypinać na ipv6 ? Pisałe...   2.12.2011, 20:56:13
- - Niktoś   A nie da rady zrobić indeksy dla obydwu protokołów...   3.12.2011, 00:28:55
- - 5k7   Więc tak - zależy o jaką bazę danych się rozchodzi...   3.12.2011, 22:26:31
- - Niktoś   Zawsze moszna przechowywać w kolumnie binary-te ad...   4.12.2011, 14:53:52
- - 5k7   Da się binary jak varbinary i indeksują się równie...   4.12.2011, 21:15:49
- - Crozin   Z wydajnością nie będzie problemów. Właściwie jedy...   4.12.2011, 21:24:50
- - 5k7   Cytat(Crozin @ 4.12.2011, 21:24:50 ) ...   5.12.2011, 15:32:31
- - Crozin   W pewnych przypadkach, możliwe jest odczytanie dan...   5.12.2011, 15:47:18
- - 5k7   Jak znajdę kiedyś chwilę to wezmę to na warsztat d...   9.12.2011, 12:34:45


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.10.2025 - 02:15