- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Вообщем есть, база, в ней есть 6к сообщение, из 6к сообщение наверно 1.5к дубли.
Как правильно удалить дубли, что бы не навредить работе бд, т.е изначальной или это не как не повлияет ?
Удаление происходит таким запросом.
В итоге, как я понял, после выполнение это запроса, индексу title присвоился ключ Unique
Но теперь, вот что происходит, при, заполнении формы, если юзер напишет title, и он будет существовать в БД, то вылетит ошибка о том, что такой тайтл уже есть (dublicate entry..)
Тогда я делаю след действие, перед отправкой данных в бд, я делаю запрос, в базу, с title который ввел юзер, если его нет, тогда отправляем данные в бд, если есть, пишем что мол введите другой title.
Есть ли ошибки в логике ? может что не учел.
delete t from table t inner join table z on z.title=t.title where t.id>z.id
Удаление дублей в БД, конечно же, никак не навредит работе самой БД.
Но может навредить работе сайта, если у вас были какие-то логические связи с каждой из этих записей в отдельности.
Чтобы не было дублей по определённому полю, как вы верно написали, нужно добавить уникальный индекс.
Можно проверять наличие записи перед добавлением отдельным селектом, а можно сразу добавлять и проверять код возвращаемой ошибки.
;13435845']Удаление дублей в БД, конечно же, никак не навредит работе самой БД.
Но может навредить работе сайта, если у вас были какие-то логические связи с каждой из этих записей в отдельности.
Чтобы не было дублей по определённому полю, как вы верно написали, нужно добавить уникальный индекс.
Можно проверять наличие записи перед добавлением отдельным селектом, а можно сразу добавлять и проверять код возвращаемой ошибки.
А...т.е если я удаляю дубль, мне нужно удалить по логической цепочти все что с ним связанно..
Ага т.е если в этом сообщении были картинки, то ищем ид сообщение в картинка и удаляем его так же. Ну если это затрагивает только эти логические связи тогда можно отследить и удалять все вместе, т.е удаляется дубль, и все что с ним связанно в других таблицах
Возник не большой вопрос, вообщем удаляю я дубли с помощью комманды
ALTER IGNORE TABLE tbl_name ADD UNIQUE INDEX(title);
но есть еще таблица
tbl_pic
Как мне одним запросом удалить дубли в tbl_name и сразу по айди удалять записи в tbl_pic ?
Эти две таблицы можно связать по id но как сделать все вместе с уникализацие и удалением ?
Или только нужно скрипт писать ?
Вообщем есть, база, в ней есть 6к сообщение, из 6к сообщение наверно 1.5к дубли.
В базе не "сообщения", а "данные". "Сообщения" - в движке. Соответственно только движок может знать (а может и не знать) все связи этого сообщения.
;13435845']если у вас были какие-то логические связи с каждой из этих записей в отдельности.
+150. Причём эти связи совсем не обязательно будут напрямую указаны в таблицах. Т.е. могут быть промежуточные таблицы и не факт что явно будут видны нужные связи.
В базе не "сообщения", а "данные". "Сообщения" - в движке. Соответственно только движок может знать (а может и не знать) все связи этого сообщения.
+150. Причём эти связи совсем не обязательно будут напрямую указаны в таблицах. Т.е. могут быть промежуточные таблицы и не факт что явно будут видны нужные связи.
Не понял на счет промежуточных, вообщем об этом не беспокойтесь, отследить связи не составляет труда, так как движок не сильно сложен, с логической точки зрение и отследить можно все без труда. :) Как бы я удалял сообщение не отслеживая связи ? или как бы движок удалял пост не отслеживая связи ? :) мол пост удалили а картинки которые идут в другой таблице под тем же айди удаленного поста оставим ? :) ну уж нет :) ну вообщем не в этом проблема щас.
Проблема в организации синхронного удаление, ну я просто не сильно разбираюсь еще в запросах, иногда легче скриптом сделать чем составлять сложный запрос, но у меня тут возникла проблема
по поводу удаление, к примеру командой приведенной выше удаляются дубликаты, при удалении даже нельзя понять из каких айди оно их удаляет.. :) что бы можно было потом с помощью этий айди удалить все из базы картинок (ну это если не синхронно, а поэтапно делать) вообщем сижу пока что ищю что годное, может кто посдкажет как сделать
вообщем об этом не беспокойтесь
Хорошо, не буду. :)
Хорошо, не буду. :)
Ну все таки один вопрос остается пока не решен :) это удаление дубликатов + ассинхронное удаление по айди из другой таблицы :)
Ну все таки один вопрос остается пока не решен это удаление дубликатов + ассинхронное удаление по айди из другой таблицы
Так ты же сказал:
Как бы я удалял сообщение не отслеживая связи ? или как бы движок удалял пост не отслеживая связи ? мол пост удалили а картинки которые идут в другой таблице под тем же айди удаленного поста оставим ? ну уж нет ну вообщем не в этом проблема щас.
Мне кацца, тебе надо как-то с этим определится :) В см со связями и отслеживанием оных.
Так ты же сказал:
Мне кацца, тебе надо как-то с этим определится :) В см со связями и отслеживанием оных.
Ну я понял к чему вы клоните 😂
Но дело в том что я не силен в запросах, пока что, если там и есть связи то там один пример удаление по айди, всего остального, это просто, а вот удаление дубликатов.. там уже орьентация идет по тайтлу а не по айди в этом и разница.
---------- Добавлено 23.01.2015 в 15:35 ----------
Как я понял что я не могу понять, это к примеру, как удалить дубли по тайтлу, и при этом знать какой айди удалился ?.. тогда на счет удаление с другой таблицы было бы про проще так как я бы уже знал айди который надо удалить..