Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> пересчитать автоинкремент в таблице 
:(
    Опции темы
jone31
  Дата 6.7.2010, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



всех приветствую.
вчера почистил таблицу mysql с логами, удалил 34 миллиона записей, оставил записи только за этот год, и получается что первый id начинается почти с 12 миллионов, что не очень удобно и это все далее будет плодится в очень быстром темпе. 

вопрос: можно ли с помощью sql языка пересчитать автоинкримент во всех строках таблицы автоматически?

столбец `id` - автоинкримент

Это сообщение отредактировал(а) jone31 - 6.7.2010, 19:18
PM MAIL   Вверх
Akina
Дата 6.7.2010, 19:24 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Оставь как есть - это будет правильно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
jone31
Дата 6.7.2010, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Цитата(Akina @  6.7.2010,  19:24 Найти цитируемый пост)
Оставь как есть - это будет правильно.

а что в этом правильного? 
таблица статическая, на неё ничего не ссылается. 

Это сообщение отредактировал(а) jone31 - 6.7.2010, 19:37
PM MAIL   Вверх
Artemon
Дата 6.7.2010, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: нет
Всего: 20



Если возникает потребность обнулять автоинкремент, то это первый звоночек, говорящий что структура БД не в порядке, либо использование БД не правильное.



--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
skyboy
Дата 6.7.2010, 20:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 15
Всего: 260



если никто не ссылается - используй естественный первичный ключ. зачем в таком случае синтетика, на которую никто не ссылается, которую никто не использует, которую надо время от времени удалять и перенумеровывать?
PM MAIL   Вверх
jone31
  Дата 6.7.2010, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Цитата(skyboy @  6.7.2010,  20:53 Найти цитируемый пост)
если никто не ссылается - используй естественный первичный ключ. зачем в таком случае синтетика, на которую никто не ссылается, которую никто не использует, которую надо время от времени удалять и перенумеровывать?


под моими словами "ничего не ссылается", я имел ввиду что от поля таблицы id ничего не зависет, а на остальных полях есть связи.

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

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

Это сообщение отредактировал(а) jone31 - 6.7.2010, 23:19
PM MAIL   Вверх
Akina
Дата 7.7.2010, 07:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(jone31 @  7.7.2010,  00:15 Найти цитируемый пост)
не совсем понял значение слова синтетика

Синтетический ключ. Подробности в мануале.

Цитата(jone31 @  7.7.2010,  00:15 Найти цитируемый пост)
 я имел ввиду что от поля таблицы id ничего не зависет

А зачем ты его вообще ввёл? Тупое следование общепринятой практике?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
jone31
  Дата 7.7.2010, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Цитата(Akina @  7.7.2010,  07:14 Найти цитируемый пост)
А зачем ты его вообще ввёл? Тупое следование общепринятой практике?

да я сам незнаю зачем я его ввел туда.  smile скорее всего наверно для нумерации записей...

Добавлено через 1 минуту и 42 секунды
да и модераторам легче ссылаться на строку по ID, чем по времени добавления и другим полям....
PM MAIL   Вверх
Akina
Дата 7.7.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Стоп! это поле - первичный ключ, или не ключ, но индексированное, или просто тупой indentity?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
jone31
  Дата 7.7.2010, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



Код

CREATE TABLE IF NOT EXISTS `log` (
  `id` bigint(20) NOT NULL auto_increment,
  `time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `user_id` int(11) default NULL,
  `user_sn` varchar(50) default NULL,
  `type` varchar(10) default NULL,
  `msg` text,
  `room` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8


PM MAIL   Вверх
Akina
Дата 7.7.2010, 16:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



1) Ты создаёшь поле bigint(20) - т.е. чётко понимая, что записей будет дохрена. И в то же время тебя пугает восьмизначный номер... где логика?
2) Поскольку это поле является первичным ключом, а таблица явно является низовой - изменение этого поля есть явный идеологический косяк. Artemon, видимо, прав.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
jone31
  Дата 7.7.2010, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 343
Регистрация: 29.11.2008

Репутация: нет
Всего: нет



да, это косяк. Но вопрос был в другом: можно ли пересчитать id в таблице по новой?
PM MAIL   Вверх
Akina
Дата 7.7.2010, 21:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Да. Можно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
dillinja
Дата 30.1.2011, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 15.1.2010

Репутация: нет
Всего: нет



jone31 случаем не решил вопрос ? просто впадлу копировать базу и прогонять по новой...

у меня такой же вопрос возник, дело в том что эти ID как никак память жрут - зачем использовать лишние мегабайты в пустую ?

 ! 
skyboy
остынь.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.