powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уменьшить время работы
5 сообщений из 5, страница 1 из 1
Уменьшить время работы
    #39375746
Arbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, как удалить старые повторяющиеся строки?
Что-то на подобии:
Из этого:
idnameother1Vanofsdikjfhsdf2Mashasdfji43423Mira10110d4Svetaffkfkf3e5Masha12121212q6Teloccccvc4f
Сделать это:
idnameother1Vanofsdikjfhsdf3Mira10110d4Svetaffkfkf3e5Masha12121212q6Teloccccvc4f
Удалили старую запись "Masha".

Вот мой код, но даже 20к строк он обрабатывает 6 минут, а мне нужно >2млн. Как можно укорить работы кода?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT count(a.id) FROM `tab` AS a, (
   SELECT b.id
   FROM `tab` AS b
   WHERE b.id < 20000
   AND b.id NOT IN (
      SELECT MAX(d.id)
      FROM `tab` AS d
      WHERE d.id < 20000
      GROUP BY d.name
      ORDER BY d.id
   )
) AS c
WHERE a.id = c.id
AND a.id < 20000
...
Рейтинг: 0 / 0
Уменьшить время работы
    #39375747
Arbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DELETE a.* FROM `tab` AS a, (
   SELECT b.id
   FROM `tab` AS b
   WHERE b.id < 20000
   AND b.id NOT IN (
      SELECT MAX(d.id)
      FROM `tab` AS d
      WHERE d.id < 20000
      GROUP BY d.name
      ORDER BY d.id
   )
) AS c
WHERE a.id = c.id
AND a.id < 20000
...
Рейтинг: 0 / 0
Уменьшить время работы
    #39375772
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDL и EXPLAIN в студию.
...
Рейтинг: 0 / 0
Уменьшить время работы
    #39375797
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Уменьшить время работы
    #39375875
Arbus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Более менее решил проблему. Код отрабатывает за 90 секунд вместо 6 минут.
Код: sql
1.
2.
3.
4.
DELETE b
FROM tab AS a
JOIN tab AS b ON a.name=b.name AND a.id>b.id
WHERE a.id<=20000 AND b.id<=20000
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уменьшить время работы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]