У меня была проблема, когда при попытке ввода названия атрибута в поле в карточке товара сайт отдавал ответ очень долго сек 10 и только потом появлялся список названий данного атрибута.
https://prnt.sc/10sx545
Как видите идентичных названий очень много.
Это сложилось изза того что у нас есть система которая загружает артибуты из розетки и складывает их в бд.
Но для каждой категории розетки значения одного и того же названия атрибута может быть разное и по этому много названий атрибутов дублируются.
Есть таблица в бд, она отвечает за атрибуты.
Очень большая - http://joxi.ru/VrwN3gQH4DLeZA 580 мегабайт
Вообщем решение, которое я предложил было следующее и оно помогло.
Человек который это сделал меня игнорирует.
Я вижу решение через оптимизацию конкретной таблицы, которая 580 мб
например атрибут цвет имеет 4050 дублей
И так со многими.
Получается можно удалить дубли и все будет работать быстро.
Но проблема в том что у старых товаров эти атрибуты закреплены под разными id. Получается если удалить все и оставить один атрибут, то этот же атрибут останется только у тех товаров к которым он привязан, а у остальных товаров данный атрибут просто исчезнет.
К примеру если цвет имеет 4050 дублей и оставить 1, а удалить 4049 остальных, то этот атрибут только и останется у товаров у которых он есть. У остальных товаров атрибут исчезнет так как удален атрибут.
Получается можно удалить дубли атрибутов, но написать скрипт для перегенерации айди атрибутов у тех товаров у которых удалились эти дубли атрибутов.
Тоесть если мы имеем 3 атрибута цвета с айди 1,2,3 при удалении айди 2 и 3 нам нужно товарам у которых они есть присвоить айди 1. Таким образом товары не потеряют свои атрибуты.
Когда это было сделано - все стало работать нормально.
===========================
Чел написал скрипт, который удалил лишние атрибуты, оставил 1 и прописал его айди у тех товаров у которых удалили айди дубли.
Цитирую его реализацию, по крайней мере то что он писал
"Технически это будет так - скрипт выбирает с базы все эти атрибуты. Сохраняя все id в массив. Выбирает 1 из них (первый). Остальные удаляет. Потом сразу-же с этого массива где остальные id, переберает их, ищет их в товарах и заменяет на первый, который оставили"
ИСКЛЮЧЕНИЕ ПРИ УДАЛЕНИИ ДУБЛЕЙ
Есть 3 названия атрибутов:
Доставка/оплата
Страна-производитель товара
производитель
Для них в другом функционале жесткая привязка к айди и именно эти айди удалять нельзя.
вот скрин айди https://prnt.sc/10sxhxm
Тоесть по этим 3 атрибутам мы работаем так же - выбираем один айди и применяем его всем остальным которые удалили. Но если попадают атрибуты с айди что на скрине - эти атрибуты удалять запрещено.