Основные ключи MySQL и VARCHAR (255) - PullRequest
2 голосов
/ 12 января 2012

У меня есть база данных, использующая VARCHAR (255) в качестве своего первичного ключа для таблиц, и они выглядят как GUID. Разве Int лучше для производительности?

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Это зависит от вашего механизма хранения, но, вообще говоря, int / bigint будет лучше. Если вы используете innodb, uuid / guid является плохим выбором для первичного ключа из-за работы кластерного индекса. Прочитайте этот блог , чтобы узнать больше об этом. Подводя итог, ключи хранятся по диапазону, и поскольку uuids 'являются случайными, они сделают вставки и поиск менее эффективными, поскольку вы бы разбили кэш с чтением и записью целых блоков памяти для каждой строки.

0 голосов
/ 12 января 2012

Ints занимают меньше места на диске, поэтому вам нужно меньше ввода-вывода при поиске.Пока диапазон соответствует вашим потребностям, я бы сказал, что int будет быстрее.

...