2010-05-22 13 views
6

Mam prostą tabelę użytkowników, myślę, że maksymalna liczba użytkowników, którą mam mieć, to 300 000.Mysql medium int vs int performance

Obecnie używam:

CREATE TABLE users 
(
     id INT UNSIGNED AUTOINCREMENT PRIMARY KEY, 
     .... 

Oczywiście mam wiele innych tabel, dla których użytkownicy (id) jest klucz obcy.

Przeczytałem, że ponieważ id nie użyje pełnego maksimum INT, lepiej użyć: MEDIUMINT i da lepszą wydajność.

Czy to prawda?

(używam MySQL w systemie Windows Server 2008)

+1

patrz http://stackoverflow.com/questions/1157371/meaning-of-3-byte-numeric-in-mysql-mediumint –

Odpowiedz

10

Chciałbym rozważyć użycie MEDIUMINT czasami .. na 300K wierszy .. MEDIUMINT daje wystarczająco dużo miejsca do 16 mln wierszy (niepodpisane).

Jest nie tylko o „mniejszym rozmiarze stołu”, gdy u używać indeksów .. różnica może być ogromny na wierszach 27m stołach .. zmieniając 2 kolumny z INT do MEDIUMINT uratował mnie 1GB (+ indeksuje dane tabeli) tak z 2,5 GB do 1,5 GB.

3

Nie powinno być różnicy w wydajności, jedyną zaletą masz jest nieznacznie mniejszy rozmiar tabeli. W każdym razie, na 300'000 rzędów nie powinieneś się przejmować.

5

To się nazywa mikro-optymalizacja, a nie problem.
Postaraj się zadać (przede wszystkim samemu) pytania dotyczące wydajności oparte wyłącznie na prawdziwym doświadczeniu, a nie na wyobraźni. I profilowanie jest zawsze pomocne w rozróżnieniu między sobą.

Co do "300k max" - w rzeczywistości liczba ta rośnie niespodziewanie. Po co wykopać pułapkę dla siebie?