Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Co szybsze: int(11) czy int(10) unsigned?
Forum PHP.pl > Forum > Przedszkole
eerie
Witam

Jak w temacie. Jaka deklaracja dla głównego id tabeli jest szybsza i lepsza: int(11) czy int(10) unsigned?

Pozdrawiam
EERIE
trueblue
Nie ma znaczenia.
Jedyne ograniczenie SIGNED w przypadku kiedy jest to kolumna autoincrement, to szybsze wyczerpanie możliwych wartości.
viking
Na początek. Czy rozumiesz co oznacza zapis int(11)?
eerie
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
Poczytaj sobie https://dev.mysql.com/doc/refman/8.0/en/integer-types.html oraz co to jest zerofill.
eerie
Poczytałem i nie znalazłem nic nowego. Nadal nie mam pewności, która opcja działa szybciej. wink.gif

EERIE
viking
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
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. wink.gif

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ę? smile.gif

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

EERIE
viking
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
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
@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
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 smile.gif
Tomplus
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
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. smile.gif
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.