Сбросить / сжать поле mysql AI ID? - PullRequest
2 голосов
/ 19 мая 2011

У меня довольно большая таблица с примерно 250 тысячами строк. У него есть столбец идентификатора с автоматическим увеличением, который действительно бесполезен. Я не могу просто избавиться от столбца, не переписывая слишком большую часть приложения, но идентификатор никогда не используется в качестве внешнего ключа или чего-либо еще (я полагаю, просто как идентификатор, когда вы хотите удалить строку).

Большинство данных удаляется и перезаписывается по крайней мере несколько раз в день (не спрашивайте! Это не важно, хотя я понимаю, что это плохой дизайн!), Хотя общее количество строк остается довольно равномерным. Это означает, что с каждым днем ​​ИИ увеличивается на четверть миллиона или около того.

У меня такой вопрос: через несколько лет столбец ID станет слишком большим для значения INT. Есть ли способ «сбросить» идентификатор, например, OPTIMIZE или что-то в этом роде, или я должен просто запланировать создание SELECT INTO временной таблицы и усечение исходной таблицы, сбросив идентификатор до 0?

Спасибо

Ответы [ 3 ]

2 голосов
/ 19 мая 2011

Если у вас есть id как целое число, вы можете иметь 2 ^ 32/2 (2.147.483.647) строк, если целое число без знака дублируется до 4.294.967.295, не беспокойтесь о 250.000, если хотите больше, используйте unsigned bigint ( 18,446,744,073,709,551,615): P

Для сброса автоматической числовой позиции:

Таблица ALTER TABLE AUTO_INCREMENT = 1

1 голос
/ 21 июля 2017

Самый простой и быстрый :) Просто отбросьте индекс, установите автоинкремент = 1 и добавьте его обратно:)

ALTER TABLE yourtable DROP id_field;
ALTER TABLE yourtable AUTO_INCREMENT=1;
ALTER TABLE yourtable ADD id_field INT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id_field);
1 голос
/ 19 мая 2011

Либо измените тип данных ID на BIGINT и настройте свою программу соответствующим образом, либо, если вы удаляете все , когда удаляете данные, вы можете использовать TRUNCATE TABLE TABLENAME , который будет сбрасыватьпоследовательность.

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