Как ускорить sql запрос?

12
MB
На сайте с 24.02.2009
Offline
162
2478

Всем привет.

Есть такой запрос он проверяет наличие дублирующих строк в таблице wp_posts по полю post_title и удаляет дубли, всё бы ничего, но когда я его использую то скрещиваю пальцы чтобы БД не рухнула, выполняется он примерно от 3 до 5 минут

ALTER IGNORE TABLE wp_posts ADD UNIQUE INDEX titleindex (post_title(255)) ;

ALTER TABLE wp_posts DROP INDEX titleindex;

сканируется 360000 строк

можно ли как то ускорить его, может какие то значения в my.cnf надо добавить-увеличить, пробовал увеличивать key_buffer_size до 512M, не помогло, может ещё что то надо подкрутить? на vps имеется 2гб памяти.

NothingMatters
На сайте с 12.06.2017
Offline
45
#1

А зачем эти выкрутасы с индексом, когда можно просто выбрать все title, найти дубли и через DELETE удалить? Это будет явно быстрее чем строить индексы каждый раз.

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#2

Эм, а если оставить уникальный индекс по титлу и всё. О таком не думали? И дубли просто физически не добавятся.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Оптимизайка
На сайте с 11.03.2012
Offline
396
#3
NothingMatters:
можно просто выбрать все title, найти дубли и через DELETE удалить?

ALTER IGNORE TABLE ADD UNIQUE INDEX именно это и делает.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
NothingMatters
На сайте с 12.06.2017
Offline
45
#4
Оптимизайка:
ALTER IGNORE TABLE ADD UNIQUE INDEX именно это и делает.

Да, но учитывая то, как у wp "оптимизированны" таблицы, и сколько там мусора, я бы возложил эту задачу на просто скрипт в 10 строчек.

edogs software
На сайте с 15.12.2005
Offline
775
#5
NothingMatters:
А зачем эти выкрутасы с индексом, когда можно просто выбрать все title, найти дубли и через DELETE удалить? Это будет явно быстрее чем строить индексы каждый раз.

В среднем по палате быстрее не будет, но для снижения нагрузки и сохранения целостности базы - лучше на ВП удалять дубли пхп скриптом, не забывая отслеживать связи.

Mister_Black:
Всем привет.
Есть такой запрос он проверяет наличие дублирующих строк в таблице wp_posts по полю post_title и удаляет дубли, всё бы ничего, но когда я его использую то скрещиваю пальцы чтобы БД не рухнула, выполняется он примерно от 3 до 5 минут

ALTER IGNORE TABLE wp_posts ADD UNIQUE INDEX titleindex (post_title(255)) ;
ALTER TABLE wp_posts DROP INDEX titleindex;

сканируется 360000 строк

можно ли как то ускорить его, может какие то значения в my.cnf надо добавить-увеличить, пробовал увеличивать key_buffer_size до 512M, не помогло, может ещё что то надо подкрутить? на vps имеется 2гб памяти.

Так создайте один раз уникальный индекс и оставьте его. Раз Вас заботит только уникальность (и не заботят например потерянные связи с тэгами и т.д.).

Чисто не там где убирают, а там где не мусорят:) Уникальный индекс спасет Вас от создания дублей.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Оптимизайка
На сайте с 11.03.2012
Offline
396
#6

NothingMatters, ваш скрипт будет работать медленнее.

NothingMatters
На сайте с 12.06.2017
Offline
45
#7
Оптимизайка:
NothingMatters, ваш скрипт будет работать медленнее.

Мой скрипт не будет вешать базу.

MB
На сайте с 24.02.2009
Offline
162
#8

Насчёт уникального индекса, попробую, может и получится.

Дубли попадают из rss фида, новости на сайт добавляются с помощью плагина feedwordpress, если он заработает после добавления уникального индекса на post_title тогда это решит проблему.

MB
На сайте с 24.02.2009
Offline
162
#9

Нет, с уникальным индексом не получается, feedwordpress отказывается вообще добавлять новости на сайт.

Придётся искать другое решение.

TF-Studio
На сайте с 17.08.2010
Offline
334
#10

добавьте поле хеш

и md5 - это быстрее будет (или искать по хешу или сделать уникальным, к примеру)

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий