как повторно индексировать mysql таблицу

У меня есть таблица со многими строками, но они не работают. Я использую поле "идентификатор" в качестве первичного ключа. У меня также есть поле "даты", которое является полем даты и времени.

Как я мог повторно индексировать таблицу так, чтобы записи были id'd в хронологическом порядке согласно полю даты

9
задан mrpatg 18 January 2010 в 21:51
поделиться

4 ответа

Как бы я мог это сделать, это создать новую таблицу с автоматическим приростом Индекс и просто выберите весь свой старый стол в нее заказа по дате. Затем вы можете удалить свой старый стол.

10
ответ дан 4 December 2019 в 06:14
поделиться

Почему вы хотите, чтобы последовательность IDS коррелирует с датами? Похоже, вы хотите сделать порядок по идентификатору , и у строк вернутся в порядке даты. Если вы хотите строки в порядке даты, просто используйте порядок по дате вместо этого.

Значения в столбце ID AUTOINCREMENT должны рассматриваться как произвольные. Полагаясь на ваши идентификаторы, находящиеся в дате порядок, это плохое представление.

9
ответ дан 4 December 2019 в 06:14
поделиться

Следующий фрагмент SQL должен делать то, что вы хотите.

ALTER TABLE test_table ADD COLUMN id2 int unsigned not null;
SET @a:=0;
UPDATE test_table SET id2=@a:=@a+1 ORDER BY `date`;
ALTER TABLE test_table DROP id;
ALTER TABLE test_table CHANGE id2 id int UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD PRIMARY KEY (id);

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

8
ответ дан 4 December 2019 в 06:14
поделиться

Вы можете использовать ALTER TABLE T order CoL; Разрешенный синтаксис порядка как в выборах.

2
ответ дан 4 December 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: