![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
FactoREAL |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 10.1.2009 Репутация: нет Всего: нет |
Здравствуйте. У меня есть база (примерно 250 000 записей). Вот появилась необходимость почистить её. Не очень хочется возиться с SQL запросами, поэтому сделал небольшой скрипт на nodejs. Он поочёредно выбирает каждую запись, выполняет проверку некоторых условий, и при выполнении некоторых, эта запись из таблицы удаляется. Так вот пробовал уже несколько способов, некоторые выполнялись быстро, некоторые очень долго, и вроде бы ненужные записи удалялись из таблицы, но при проверке таблицы количество строк в ней такое же как и было раньше... Проверял как sql запросом,
так и программой emma. Что происходит с записями при удалении из таблицы? их место полностью очищается, или просто становиться пустым, но по факту строка остаётся ? Почему у меня такой странный эффект возникает. Я уже думал что это из за асинхронности выполнения запросов nodejs. Подскажите в чём может быть проблема. |
|||
|
||||
igorold |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: 5 Всего: 17 |
При удалении записей, их количество должно уменьшаться ...
-------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Значит, только "вроде бы", а на самом деле нет. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
РОМАN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.4.2012 Репутация: нет Всего: нет |
COUNT работает для полного набора и для столбца по разному:
COUNT(id) - количество значений id не равных NULL COUNT(*) - количество всех строк хотя не думаю что в поле id у тебя полно NULL но может дело в этом... |
|||
|
||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
это зависит от типа таблицы (движка), но обычно перемещения данных на диске не происходит, запись просто помечается как удаленная, занимаемое ей место может быть использовано повторно. конечно, удаленные записи не участвуют в результатах запроса, так что у Вас либо ничего не удаляется, либо удаляются строки с id==NULL (что странно и врядли) физическое перемещение данных выполняется специальными инструкциями, в myqsl это OPTIMIZE TABLE. |
|||
|
||||
РОМАN |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 5.4.2012 Репутация: нет Всего: нет |
Может быть дело в том что ты удаляешь некоторые данные из представления, а не таблицы. Скажем, если ты удаляешь данные таблицы которая является частью LEFT JOIN представления, то общее количество строк представления останется тем же. Проверь что ты работаешь именно с таблицей а не с представлением (возможно проект для тебя новый и ты еще не успел изучить всю структуру БД). Проверить легко: SHOW CREATE TABLE
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |