Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydajność mysql a typ danych
Forum PHP.pl > Forum > Bazy danych > MySQL
Blastereq
Witam, nie mogę się doszukać nigdzie informacji na temat różnicy w wydajności między różnymi typami danych w mysql. Już tłumaczę o co chodzi, kupiłem dość drogi skrypt, koleś profesjonalnie napisał skrypty, ale mam zastrzeżenia co do bazy danych.
ID, Id kategorii są w Varchar(255) , daty i inne opcje też, czasami pojawi się text dla dużych opisów.
Czy ma to duży wpływ na szybkość działania, ilość miejsca , ogólną stabilność?
Pozdrawiam
Indeo
Zasadniczo tak choć nie zrażaj się samymi varchar(). Ja pracuje na dużych bazach (tak mi sie wydaje - 1,5 GB) i tez uzywam varchar smile.gif Wszystko zalezy od przeznaczenia danego pola:
jesli pole varchar przechowuje daty i tak naprawde pełni funkcję dziennika rejestrującego daty to nie ma dla wydajności większego znaczenia czy to data czy varchar poza nadmiernym rozdefragmetowaniem plików bazy - natomiast jeżeli takie pole ma potem służyć jako kryterium wyboru danych, czy jako indeksy, czy służyć łączeniu tabel - wtedy wydajność ucierpi.
Jesli chodzi o pola typu text - nie ma sensu ich nadużywać. Bez sensu jest mieć nazwe użytkownika zapisaną jako text. Indeksy da się zakładac nawet na polach text (okreslona liczba początkowych znaków) ale w szastaniu zasobami serwera i przestrzenią dyskowa nalezy być wstrzemięźliwym.
Jeśli masz pole w bazie np. pesel - wiadomo, że musi być np int(9) - wtedy działa najszybciej. Tam gdzie możesz staraj się używać typu danych, który najbardziej podobny jest do Twoich danych. Ciąg znaków 46546 możesz zapisac na kilka sposobów ale podczas porównań zawsze będzie on działał szybciej na polu typu int niż char, bo aplikacja napotykając pierwszą cyfre - "4" ma do porównania tylko 9 pozostałych cyfr - natomiast jesli pole będzie typu char - trzeba cyfre "4" porównać jeszcze z całym alfabetem.

W większości przypadków "webowych" zwiększenie czasu odpowiedzi z 0.03 sec do 0.3 nie będzie specjalnie zauważalne, ale przy zapytaniach 0.5 wzrost 10 krotny czasu to już 5 sec smile.gif
Blastereq
No tak, właśnie tutaj służy jako kryterium wyboru danych. Jak napisałem IDy są w varchar, ponieważ mój serwis ma być w zamierzeniach "duży" trzeba będzie to zoptymalizować jednak. Dzięki za rozbudowaną odpowiedz. Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.