криво код и там очень много дублей, есть какая-то возможность поставить уникальный индекс по двум полям чтобы автоматический удалились дубликаты?
Индекс не удаляет дубликаты
Это я знаю, он просто не позволяет создать дублирующие данные, но думал есть какой-то вариант, а то почти все запросы падают
Возможность поставить индекс есть но удаление дубликатов - это ручная операция потому что дубликат - это набор записей, у которых ключевые поля одинаковые, а не ключевые поля могут быть разными. И то какую запись из нескольких одинаковых оставлять А какие удалять система управления БД сама решить не может . Поэтому тебе надо будет написать какую-то программу или какой-то скрипт который будет это делать.
Окей, понял, спасибо
Запросы от дубликатов вряд ли будут падать
Просто пытался удалить через DELETE по ключевым полям, но он просто висел 20 минут и по итогу упал
Подскажите пжл. - откуда вы черпаете такую информацию? А то я создал индекс по полю даты документа - а теперь вот думаю, что индекс не работает, ведь у меня много документов за день
Так это уникальный индекс по нескольким полям, а не обычный индекс
Как мне может помочь уникальность, при таком запросе SELECT * FROM users WHERE age <= 29 AND gender = 'male'
Речь ведь идёт Про удаление дубликатов так? Тогда ещё раз индексы тебе ничем тут не помогут кроме одного: возможно сделают твои запросы быстрее
Уникальные индексы тебе придётся убрать временно, потому что они тебе будут мешать убирать дубликаты, потому что данные с выставленными уникальными индексами ты в базу данных не вставишь
Индексы мне нужны для создания грубо говоря, чтобы из кода не могло возникнуть дубликатов при создании, а конфликты решаю через ON DUPLICATE KEY UPDATE Просто читал на stackoverflow что раньше можно было написать как то так: ALTER TABLE IGNORE.... и он удалял все дубликаты, но видимо было в старых версиях мускуля (5.7 вроде)
Обсуждают сегодня