Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уменьшить время работы / 5 сообщений из 5, страница 1 из 1
27.12.2016, 05:29
    #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
27.12.2016, 05:32
    #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
27.12.2016, 08:12
    #39375772
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшить время работы
DDL и EXPLAIN в студию.
...
Рейтинг: 0 / 0
27.12.2016, 09:31
    #39375797
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Уменьшить время работы
...
Рейтинг: 0 / 0
27.12.2016, 11:00
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Уменьшить время работы / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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