![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
Chciałbym się dowiedzieć co to indeksy w mysql, do czego służą i jakieś przykłady.
Nie będę wybrzydzać jak ktoś poda również linka do jakieś strony z tutorialem, lecz po polsku. Pozdrawiam -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 169 Pomógł: 16 Dołączył: 18.10.2006 Skąd: Olsztyn/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Proszę Cie bardzo o to materiały o które prosiłeś
![]() http://republika.onet.pl/20405,16688,5,10,kursy.html i tutaj obszerniej: http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html "Indeksy są wykorzystywane do szybkiego odnajdywania rzędów z wyspecyfikowanymi wartościami kolumn." ps. google nie zabija Ten post edytował Danone 13.02.2008, 18:58:31 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Coś szukanie idzie ci bardzo opornie...
W skrócie: indeksy w bazie danych można porównać do indeksu w książce. Bez indeksu szukając jakiegoś tematu musiałbyś przelatywać cały spis treści lub nawet całą książkę, natomiast mając na końcu książki indeks możesz do niego zajrzeć i od razu uzyskać numery stron, na których jest interesujący cię temat. Indeksy znacznie przyspieszają wyszukiwanie, natomiast spowalniają modyfikowanie zawartości bazy danych (dochodzi aktualizacja indeksów). Ponadto zajmują dodatkowe miejsce na dysku. Coś za coś. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
no tak, ale jak mam tabelę użytkownicy
LOGIN HASŁO MOTTO ŻYCIOWE DATA URODZENIA i dam index dla loginu, to już login jest indexem i można powiedzieć, ze w tabeli są indexy? -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 107 Pomógł: 10 Dołączył: 26.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
mozna tak powiedzieć
-------------------- Rachunkowość w biurze we Wrocławiu: biuro rachunkowe wrocław, miejca parkingowe przy Okęciu parking Okecie.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Na login możesz nadać wręcz indeks unikalny (UNIQUE) - chyba, że dopuszczasz kilku użytkowników o tym samym loginie.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Zrób zapytanie z pięcioma left joinami na tabelach z kilku tysiącami rekordów, to zobaczysz, dlaczego zakłada się indeksy na pola relacyjne.
Niedawno się głowiłem, dlaczego zapytane leci 12 sekund :| Założyłem 5 indeksów i trwa 0.02 sekundy ![]() Pozdrawiam -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
właśnie przeczytałem o indeksach, wiem jak indeksować
ale co tylko zaznaczam w mysql daną kolumnę jako indeks i poźniej to ułatwia jak jest wyszukiwanie where=indeks dobrze rozumuje? A czy takie tworzenie tabeli jest poprawne. tzn będzie szybko wyszukiwało po nazwach użytkowników?
-------------------- |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 32 Pomógł: 6 Dołączył: 28.08.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
indeksy lepiej rób liczbowe... czemu?
załóżmy, że masz taką tabelę: imię, nazwisko, ojciec jan, nowak, krzysztof nowak krzysztof, Nowak, ... i drugą ID, imie, nazwisko, ojciec 1, jan, nowak, 2 2, krzysztof, nowak, NULL jak w pierwszej chcesz wyświetlić dane ojca? musisz dzielić pole ojciec na imie i nazwisko, które ktoś mógł napisać odwrotnie, w których mógł użyć lub nie, wielkich liter. w drugim przypadku po prostu wyświetlasz wpis nr 2 -------------------- Pomogłem? Kliknij "pomógł" ;)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
no ale ja chciałbym żeby było login? też może być?
a kolumnie login nie dałem index tylko klucz podstawowy to takie coś poprawne jest? -------------------- |
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Na klucz główny automatycznie nadawany jest indeks (bodajże nawet unikalny) więc nie ma potrzeby (lub wręcz się tego nie sugeruje) ręcznego nadawania danej kolumnie indeksu.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
to jak mam tabelę
LOGIN HASŁO WIEK ILOSC DZIECI PRACA ADRES TELEFON to dać jako klucz standartowy LOGIN najlepiej? -------------------- |
|
|
![]()
Post
#13
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Nie. Najlepiej zawsze tworzyć identyfikatory rekordu jako liczby. Dlaczego? Indeksy liczbowe są zawsze szybsze niż alfanumeryczne, poza tym w przypadku zmiany wartości pola (w tym przypadku loginu) mogą ci się posypać powiązania z innymi tabelami. Lepiej do każdej (prawie) tabeli dodawać pole "id".
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
no tak, ale jak użytkownik mi się zaloguj wg loginu
to też trochę czasu zejdzie zanim skrypt znajdzie do którego loginu jest przypisane dane id nie? -------------------- |
|
|
![]()
Post
#15
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
W takim razie rób jak chcesz. Zadałeś pytanie, udzieliłem ci odpowiedzi. Moim skromnym zdaniem zasugerowane przeze mnie rozwiązanie jest najlepsze. Jeśli masz inne zdanie na ten temat - rób jak uważasz.
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
nie, nie o to chodzi
tylko się pytam jak to będzie wyglądało jak użytkownik się zaloguje wg loginu i skrypt ma w jaki sposób przeszukać jaki login ma id? -------------------- |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Oczywiście, że musi być id - każda tabela powinna mieć główny index - unikalny. Jest nim zawsze pole integer.
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 368 Pomógł: 2 Dołączył: 23.09.2007 Ostrzeżenie: (60%) ![]() ![]() |
ja wiem że musi być
tylko jak mam wówczas zrobić żeby szybko, a nie jak sam mówiłeś w 12 sekund, Odczytało jaki dany login ma id, czyli index. -------------------- |
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Przecież jak logujesz użytkownika to pobierasz jego rekord z bazy, prawda? Pobierasz zatem również pole ID - nie rozumiem Twoich rozterek.
Pozdrawiam. -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#20
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Ideą stosowania index'ow jest przyspieszenie wyszukiwania danych i zazwyczaj indexy zakłada się dla pól które używasz w klauzuli WHERE, ORDER BY, ale to też nie jest z góry powiedziane, zależne jest to od wielu czynników i nie da się tu utworzyć reguły.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 15:01 |