Mysql средний int против производительности int - PullRequest
6 голосов
/ 22 мая 2010

У меня есть простая таблица пользователей, я думаю, максимальное количество пользователей, которое я собираюсь иметь, составляет 300 000.

В настоящее время я использую:

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

Конечно, у меня есть много других таблиц, для которых user (id) - это FOREIGN KEY.

Я прочитал, что, поскольку идентификатор не будет использовать полный максимум INT, лучше использовать: MEDIUMINT, и это даст лучшую производительность.

Это правда?

(я использую mysql в Windows Server 2008)

Ответы [ 3 ]

10 голосов
/ 02 октября 2010

Я бы посоветовал использовать MEDIUMINT иногда .. на строках по 300 КБ. MEDIUMINT дает вам достаточно места до 16M строк (без знака).

Речь идет не только о "меньшем размере таблицы", когда вы используете индексы ... разница может быть огромной в таблицах с 27M строк. изменение 2 столбцов с INT на MEDIUMINT позволило мне сэкономить 1 ГБ (индексы + данные таблиц), поэтому он вырос с 2,5 ГБ до 1,5 ГБ.

5 голосов
/ 22 мая 2010

Это называется микрооптимизацией, а не проблемой.
Постарайтесь задавать (прежде всего себе) вопросы производительности, основываясь только на реальном опыте, а не на воображении.И профилирование всегда помогает отличить одно от другого.

Что касается "300k max" - в реальной жизни числа имеют тенденцию неожиданно расти.Зачем копать ловушку для себя?

3 голосов
/ 22 мая 2010

Не должно быть разницы в производительности, единственное преимущество, которое вы получаете, это немного меньший размер таблицы.В любом случае, вам не нужно заботиться только о 300 000 строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...