- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Одноклассники пресекли более 9 млн подозрительных входов в учетные записи
И выявили более 7 млн подозрительных пользователей
Оксана Мамчуева
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день.
Прошу помощи у профессионалов по ускорению запроса для Mysql
Есть таблица email_subscribe с набором значений:
Необходимо получить дубликаты по полю "ekey", которые в дальнейшем можно удалить
Сделал 2 запроса, они выводят, список нужных дублей по полю "ekey", которые можно потом удалить...
Результат двух запросов правильный и идентичный:
Проблема в том, что при больших объемах данных (если в таблице email_subscribe будет 700 000 записей) эти запросы очень долго выполняются, не могу дождаться завершения запроса на локальном хосте при ~160 000 строк
Индексы по нужным полям таблицы email_subscribe поставил
Привожу explain запроса:
Привожу explain запроса:
В чем причина длительного выполнения обоих запросов?
SELECT t1.id FROM table t1 LEFT JOIN table t2 ON t1.ekey=t2.ekey WHERE t1.id>t2.id
+ индекс по полю ekey
Добрый день.
Прошу помощи у профессионалов по ускорению запроса для Mysql
Есть таблица email_subscribe с набором значений:
Необходимо получить дубликаты по полю "ekey", которые в дальнейшем можно удалить
Если нужно просто удалить дубликаты, то есть тупой и скоростной способ
Если у Вас innoDB, то добавьте первой строкой
Если нужно просто удалить дубликаты, то есть тупой и скоростной способ
Если у Вас innoDB, то добавьте первой строкой
Дело в том что мне не нужно удалять дубликаты, мне нужно их получить, чтобы в дальнейшем обработать...
---------- Добавлено 29.10.2015 в 15:40 ----------
SELECT t1.id FROM table t1 LEFT JOIN table t2 ON t1.ekey=t2.ekey WHERE t1.id>t2.id
+ индекс по полю ekey
Исходные значения в таблице:
Не пойму как работает запрос, он возвращает мне неправильное множество:
А должен вернуть повторяющие по полю ekey записи:
GROUP BY t1.id
А вообще так делать нельзя, хоть в mysql и работает:
Это правильный ответ. Запрос выдаст только дупы, их можно смело удалять. После удаления запрос нужно запустить еще раз для удаления следующей партии дупов. И так несколько раз.
Нужен еще индекс по полю ekey. Работает быстро, гонял похожие запросы на табличках по несколько лямов записей.
ps: join-ы и т.д. для таких целей совсем не нужны.
В классическом SQL нужно к полю id добавить одну из функций: min(), max(), first(), last().
MySQL не заморачивается с этим и вариант с id работает. :)
Запрос выдаст id всех уникальных записей (которые нельзя удалять). Все остальные id, которые не выдал запрос - дупы.