- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Друзья, приветствую! Нужна помощь. Дело в следующем:
В моей таблице (Mysql) более 600 тысяч записей. Как мне не уронив сервак, почистить дубликаты? Может как-то с задержками через php? Есть мысли? Очень надо.. С наступающим праздником!
дубликаты чего? записей? какие задержки, это одним запросом делается если в таблице есть primary key
DELETE FROM `table` t1 WHERE EXISTS (SELECT `field` from `table` t2 WHERE `t1`.`field`=`t2`.`field` AND `t1`.`id`!=`t2`.`id`)
где field - поле, уникальность которого надо достичь, а id это Primary key
Более быстрый вариант с self-joinом но может памяти не хватить запросто
limit можно писать не только в select, но и в update. подавайте потихонечку серию запросов на обновление с limit и все получится.
limit можно писать не только в select, но и в update. подавайте потихонечку серию запросов на обновление с limit и все получится.
Я тут умудрился запросом "delete from t using links t, links t2 where t.l_url LIKE t2.l_url and t.l_url = t2.l_url" положить mysql у провайдера ;) К этому запросу лимит можно использовать?
здесь, пожалуй, нет смысла.
у вас ведь есть первичный ключ на этих таблицах?
выбирайте "окно" в таблице на основе этого ключа : пусть предыдущий предыдущий id это начало окна. нужно отступить N записей вперед по order by и узнать конец "окна".
полученные ключи использовать как дополнительные ограничения в t, а объединять для поиска со всей таблицей без ограничений.
Если и эта нагрузка неудовлетворительная, придется во вложенном цикле такое же окно применять ко второй таблице
А может лучше выбрать только уникальные и перекинуть во временную БД? Ну потом можно из исходной стереть всё и залить в неё то, что получилось? :)
Друзья, приветствую! Нужна помощь. Дело в следующем:
В моей таблице (Mysql) более 600 тысяч записей. Как мне не уронив сервак, почистить дубликаты? Может как-то с задержками через php? Есть мысли? Очень надо.. С наступающим праздником!
Честно говоря не очень ясно описана задача, но тем не менее, мы обычно используем следующий запрос
для удаления дубликатов из базы. В данном примере оставляются только те записи, в которых field1, field2 уникальные. То же можно сделать по 1 полю или по нескольким.
Лучше делать это на отдельной таблице, что бы во время альтерения не было других запросов. Способ самый шустрый из возможных.
Вариант через php конечно возможен. Но он медленен, печален и достаточно очевиден. Выбираете последовательно по 1000 записей из старой БД и вставляете в новую. Для простоты в новой можно создать unique индекс по нужным полям, что бы не париться лишний раз с проверками на возможность вставки.
P.S.: Варианты вида select join - просто ужасны и скорее всего однозначно положат базу на больших таблицах. Такие варианты годятся неплохо для нескольких таблиц, но для одной это просто страшный overkill