Salvation
17.03.2016, 18:05:50
Witam

Chciałbym się dowiedzieć czy to prawda, że lżejszym rozwiązaniem dla bazy danych MySQL jest utworzenie kolumny typu INTEGER i przechowywanie w niej timestamp() z PHP, niż utworzenie kolumny typu TIMESTAMP/DATETIME, która jest jakby nie było stringiem.
Z góry dziękuję za odpowiedzi
vokiel
17.03.2016, 18:25:39
Wewnętrznie timestamp to też int, z tą różnicą, że baza ma wbudowane narzędzia do jego obsługi.
Cytat
TIMESTAMP: A four-byte integer representing seconds UTC since the epoch ('1970-01-01 00:00:00' UTC)
Salvation
17.03.2016, 18:58:54
No tak, TIMESTAMP też zajmuje 4 Bajty. Tylko chodzi o sam mechanizm bazy czy szybciej jednak obsłuży wartość INTEGER?
Pyton_000
18.03.2016, 14:22:27
Cytat(Salvation @ 17.03.2016, 18:05:50 )

Witam

Chciałbym się dowiedzieć czy to prawda, że lżejszym rozwiązaniem dla bazy danych MySQL jest utworzenie kolumny typu INTEGER i przechowywanie w niej timestamp() z PHP, niż utworzenie kolumny typu TIMESTAMP/DATETIME, która jest jakby nie było stringiem.
Z góry dziękuję za odpowiedzi

Co jest stringiem? Datetime? Timestam?...
Typów używa się zgodnie z przeznaczeniem. Po co pchać to w Int? Będziesz liczył na tym czy co? Data to data, czas to czas. To może od razu w string wpakuj...
Salvation
18.03.2016, 16:44:24
Może nie będę robił żadnych operacji matematycznych, ale szybciej jest mi zapisać timestamp() z PHP jako INTEGER w MySQL niż przy dodawaniu rekordu przepuszczać to jeszcze przez jakieś funkcje.
markonix
18.03.2016, 16:51:37
Przy TIMESTAMP wystarczy ustawić odpowiednio ON INSERT / UPDATE i masz jeszcze mniej roboty.
Salvation
18.03.2016, 17:07:02
No ok. Przy rejestracji mam np.
Kod
DEFAULT CURRENT_TIMESTAMP
a jak to będzie wyglądać dla kolumny np. `last_login`? Gdzie jest nadpisywana kiedy użytkownik się wylogowuje?
markonix
18.03.2016, 17:09:00
Jak sama nazwa kolumny wskazuje to jest data LOGOWANIA, a nie wylogowania.
Nigdy nie miałem potrzeby zapisywania godziny czyjegoś wylogowania.
Salvation
18.03.2016, 17:29:48
Mniejsza z tym, kiedy się wykonuje UPDATE, podałem tylko (niefortunny) przykład użycia.
Pyton_000
18.03.2016, 17:31:58
@markonix last_login czyli data poprzedniego logowania
markonix
18.03.2016, 17:43:54
@Salvation
Podałem tylko przykład kiedy timestampy przyspieszają wręcz pracę, ale to wciąż baza danych, a nie aplikacja więc skąd ma wiedzieć o czymś takim jak logowanie.
Last_login to powinien być zwykłe DATETIME i tyle. Nie wiem jaką widzisz różnicę w last_login = time(), a last_login = date()..
@Pyton_000
Data logowania, a data ostatniego logowania to jak dla mnie to samo.
Co innego jakbym chciał zapisywać datę poprzedniego logowania np. do tekstu "Nie widzieliśmy się X dni".
Salvation
18.03.2016, 19:20:13
Ok, to teraz pytanie, bo nie korzystałem z tego
Kod
ON UPDATE CURRENT_TIMESTAMP
Jeżeli zrobię UPDATE na danym wierszu - obojętnie na jakiej kolumnie, to kolumna z powyższym kodem "zaktualizuje się sama", tak?
markonix
18.03.2016, 19:31:25
Tak. To data ostatniej edycji/aktualizacji.
Czasem można to powiązać z jakimś procesem w aplikacji ale prawidłowo należy to traktować po prostu jako kolumnę służącą do przechowywania wyżej wymienionej informacji.
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.