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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Колличество строк в таблице, при удалении записей 
:(
    Опции темы
FactoREAL
Дата 3.12.2011, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. У меня есть база (примерно 250 000 записей). Вот появилась необходимость почистить её. Не очень хочется возиться с SQL запросами, поэтому сделал небольшой скрипт на nodejs. Он поочёредно выбирает каждую запись, выполняет проверку некоторых условий, и при выполнении некоторых, эта запись из таблицы удаляется. Так вот пробовал уже несколько способов, некоторые выполнялись быстро, некоторые очень долго, и вроде бы ненужные записи удалялись из таблицы, но при проверке таблицы количество строк в ней такое же как и было раньше... Проверял как sql запросом,
Код

select count(id) from mytable

 так и программой emma.
Что происходит с записями при удалении из таблицы? их место полностью очищается, или просто становиться пустым, но по факту строка остаётся ? Почему у меня такой странный эффект возникает. Я уже думал что это из за асинхронности выполнения запросов nodejs. Подскажите в чём может быть проблема.
PM MAIL   Вверх
igorold
Дата 8.12.2011, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

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



При удалении записей, их количество должно уменьшаться ... 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
Akina
Дата 8.12.2011, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(FactoREAL @  3.12.2011,  19:46 Найти цитируемый пост)
вроде бы ненужные записи удалялись из таблицы, но при проверке таблицы количество строк в ней такое же как и было раньше...

Значит, только "вроде бы", а на самом деле нет.


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

PM MAIL WWW ICQ Jabber   Вверх
РОМАN
Дата 5.4.2012, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



COUNT работает для полного набора и для столбца по разному:
COUNT(id) - количество значений id не равных NULL
COUNT(*) - количество всех строк

хотя не думаю что в поле id у тебя полно NULL но может дело в этом...
PM MAIL   Вверх
baldina
Дата 5.4.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(FactoREAL @  3.12.2011,  18:46 Найти цитируемый пост)
Что происходит с записями при удалении из таблицы? их место полностью очищается, или просто становиться пустым, но по факту строка остаётся ? 

это зависит от типа таблицы (движка), но обычно перемещения данных на диске не происходит, запись просто помечается как удаленная, занимаемое ей место может быть использовано повторно. 
конечно, удаленные записи не участвуют в результатах запроса, так что у Вас либо ничего не удаляется, либо удаляются строки с id==NULL (что странно и врядли)
физическое перемещение данных выполняется специальными инструкциями, в myqsl это OPTIMIZE TABLE.

PM MAIL   Вверх
РОМАN
Дата 5.4.2012, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Может быть дело в том что ты удаляешь некоторые данные из представления, а не таблицы. Скажем, если ты удаляешь данные таблицы которая является частью LEFT JOIN представления, то общее количество строк представления останется тем же. Проверь что ты работаешь именно с таблицей а не с представлением (возможно проект для тебя новый и ты еще не успел изучить всю структуру БД). Проверить легко: SHOW CREATE TABLE
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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