eerie
9.03.2020, 13:24:56
Witam
Jak w temacie. Jaka deklaracja dla głównego id tabeli jest szybsza i lepsza: int(11) czy int(10) unsigned?
Pozdrawiam
EERIE
trueblue
9.03.2020, 13:41:58
Nie ma znaczenia.
Jedyne ograniczenie SIGNED w przypadku kiedy jest to kolumna autoincrement, to szybsze wyczerpanie możliwych wartości.
viking
9.03.2020, 13:46:52
Na początek. Czy rozumiesz co oznacza zapis int(11)?
eerie
9.03.2020, 13:49:58
Kiedyś spotkałem się z opinią, iż deklaracja z unsigned jest wolniejsza. Ale to była pojedyncza opinia i nie jestem peny, czy można zaufać.
EERIE
Cytat(viking @ 9.03.2020, 13:46:52 )

Na początek. Czy rozumiesz co oznacza zapis int(11)?
No, int(11) to ze znakiem minus (zarówno dodatnie i ujemne wartości). Przy int(10) unsigned są tylko wartości dodatnie (2 x więcej).
EERIE
viking
9.03.2020, 13:54:10
eerie
9.03.2020, 14:05:21
Poczytałem i nie znalazłem nic nowego. Nadal nie mam pewności, która opcja działa szybciej.

EERIE
viking
9.03.2020, 14:08:27
Wewnętrznie unsigned nic nie zmienia. To są dalej 4 bajty. Mają taką samą wydajność. Różnią się pojemnością zapisu dla użytkownika.
A co oznacza liczba w nawiasie?
eerie
9.03.2020, 14:19:39
Cytat(viking @ 9.03.2020, 14:08:27 )

Wewnętrznie unsigned nic nie zmienia. To są dalej 4 bajty. Mają taką samą wydajność. Różnią się pojemnością zapisu dla użytkownika.
Ktoś mi kiedyś napisał, że ma to wpływ na użycie jakichś tam funkcji haszujących czy coś. Dokładnie nie pamiętam... Więc pytam.

Cytat(viking @ 9.03.2020, 14:08:27 )

A co oznacza liczba w nawiasie?
Liczbę znaków, jaką chcę maksymalnie użyć, z minusem lub bez. Dobrze mówię?

EERIE
viking
9.03.2020, 14:22:26
Mi ktoś kiedyś też coś mówił ale nie pamiętam.
Nie, poczytałeś o zerofill? (który i tak jest deprecated)
eerie
9.03.2020, 14:27:28
No, zerofill wypełnia zerami do liczby w nawiasie. Czemu ma służyć to całe czepialstwo?

EERIE
viking
9.03.2020, 14:35:28
Twojej lepszej nauce. Na początku pisałeś że to liczba znaków z minusem lub bez. Teraz już dałeś poprawną odpowiedź. Umiesz też znaleźć w dokumentacji typ liczbowy odpowiedni dla twoich potrzeb. Ja bym tu szukał wydajności bo jeśli wiesz że w najbliższych latach do tabelki wsadzisz n liczb to będzie to szybsze niż wybrać losowy większy typ.
Pyton_000
9.03.2020, 17:36:02
Jeśli Twoja baza zakłada wartości ujemne to bierzesz zwykły, jeśli nie to unsigned.
Wydajność? Nie odczujesz różnicy - gwarantuję
Tomplus
9.03.2020, 18:06:23
@EERIE
po co się podpisujesz pod każdym postem?
Ja zawsze zakładam wcześniej jak duże liczby mogą być w projekcie i jakie.
Numery ID z definicji są zawsze dodatnie, ale czasami warto zamiast int(11) używać smallint czy mediumint, a wciąż widzę że większość osób stosuje takie typy kolumn jakie dostają domyślnie.
Pyton_000
9.03.2020, 18:13:42
Cytat(Tomplus @ 9.03.2020, 18:06:23 )

@EERIE
po co się podpisujesz pod każdym postem?
Ja zawsze zakładam wcześniej jak duże liczby mogą być w projekcie i jakie.
Numery ID z definicji są zawsze dodatnie, ale czasami warto zamiast int(11) używać smallint czy mediumint, a wciąż widzę że większość osób stosuje takie typy kolumn jakie dostają domyślnie.
Jeśli robisz tabelę ze słow nikiem z 100 rekordami to faktycznie nie ma sensu
Tomplus
9.03.2020, 21:57:42
Dzisiaj dostałem w spadku stronę, gdzie wpisy na autorskim kodzie są zapisywane do bazy danych, gdzie rekordy id (i nie tylko) mają int(11) - jakie jest prawdopobieństwo zapełnienia wszystkich liczb dla małej strony?
Kod strony z przed 3-4 lat.
eerie
10.03.2020, 08:39:39
Dzięki wielkie wszystkim za pomoc. Wyprowadziliście mnie z błędu. Już w 2004 r. robiłem dobrze. Przed rokiem ktoś napisał mi na forum, że z unsigned działa wolniej, i niepotrzebnie pozmieniałem w projekcie. Dobrze, że zapytałem ponownie.
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.