[MySQL] Co szybsze: int(11) czy int(10) unsigned? |
[MySQL] Co szybsze: int(11) czy int(10) unsigned? |
9.03.2020, 13:24:56
Post
#1
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
Witam
Jak w temacie. Jaka deklaracja dla głównego id tabeli jest szybsza i lepsza: int(11) czy int(10) unsigned? Pozdrawiam EERIE |
|
|
9.03.2020, 13:41:58
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Nie ma znaczenia.
Jedyne ograniczenie SIGNED w przypadku kiedy jest to kolumna autoincrement, to szybsze wyczerpanie możliwych wartości. -------------------- |
|
|
9.03.2020, 13:46:52
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Na początek. Czy rozumiesz co oznacza zapis int(11)?
-------------------- |
|
|
9.03.2020, 13:49:58
Post
#4
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
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 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 Ten post edytował eerie 9.03.2020, 13:51:41 |
|
|
9.03.2020, 13:54:10
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Poczytaj sobie https://dev.mysql.com/doc/refman/8.0/en/integer-types.html oraz co to jest zerofill.
-------------------- |
|
|
9.03.2020, 14:05:21
Post
#6
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
Poczytałem i nie znalazłem nic nowego. Nadal nie mam pewności, która opcja działa szybciej.
EERIE |
|
|
9.03.2020, 14:08:27
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
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? -------------------- |
|
|
9.03.2020, 14:19:39
Post
#8
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
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. A co oznacza liczba w nawiasie? Liczbę znaków, jaką chcę maksymalnie użyć, z minusem lub bez. Dobrze mówię? EERIE |
|
|
9.03.2020, 14:22:26
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Mi ktoś kiedyś też coś mówił ale nie pamiętam.
Nie, poczytałeś o zerofill? (który i tak jest deprecated) -------------------- |
|
|
9.03.2020, 14:27:28
Post
#10
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
No, zerofill wypełnia zerami do liczby w nawiasie. Czemu ma służyć to całe czepialstwo?
EERIE |
|
|
9.03.2020, 14:35:28
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
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.
-------------------- |
|
|
9.03.2020, 17:36:02
Post
#12
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
Jeśli Twoja baza zakłada wartości ujemne to bierzesz zwykły, jeśli nie to unsigned.
Wydajność? Nie odczujesz różnicy - gwarantuję |
|
|
9.03.2020, 18:06:23
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
@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. |
|
|
9.03.2020, 18:13:42
Post
#14
|
|
Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) |
@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 |
|
|
9.03.2020, 21:57:42
Post
#15
|
|
Grupa: Zarejestrowani Postów: 1 834 Pomógł: 225 Dołączył: 20.03.2005 Skąd: Będzin Ostrzeżenie: (0%) |
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. |
|
|
10.03.2020, 08:39:39
Post
#16
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 0 Dołączył: 3.08.2017 Ostrzeżenie: (0%) |
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.
|
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 04:13 |