В настоящее время у меня есть таблица (AllProducts), которая содержит информацию о продукте. Он имеет 16 столбцов и около 125000 строк.Медленный запрос: категоризация данных
Мне нужно создать уникальное значение в базе данных, так как в таблице нет уникального значения. Я не могу использовать функцию автоматического увеличения, так как моя база данных очищается и заполняется снова ежедневно (и, следовательно, идентификация для определенных продуктов будет изменяться).
Я хочу использовать поле varchar (url), чтобы быть уникальным значением. Для этого я создал представление (AllProductsCategories), которое гарантирует уникальность комбинации URL и магазина.
select min(`a`.`insertionTime`) AS `insertionTime`,
`a`.`shop` AS `shop`,
min(`a`.`name`) AS `name`,
min(`a`.`category`) AS `category`,
max(`a`.`description`) AS `description`,
min(`a`.`price`) AS `price`,
`a`.`url` AS `url`,
avg(`a`.`image`) AS `image`,
min(`a`.`fromPrice`) AS `fromPrice`,
min(`a`.`deliveryCosts`) AS `deliveryCosts`,
max(`a`.`stock`) AS `stock`,
max(`a`.`deliveryTime`) AS `deliveryTime`,
max(`a`.`ean`) AS `ean`,
max(`a`.`color`) AS `color`,
max(`a`.`size`) AS `size`,max(`a`.`brand`) AS `brand`
from `AllProducts` `a` group by `a`.`url`,`a`.`shop`
order by NULL
Это работает нормально, но довольно медленно. Следующий запрос занимает 51 секунд, чтобы закончить:
SELECT * FROM ProductsCategories ORDER BY NULL LIMIT 50
Я совершенно новый для MySQL и экспериментировали индексацию следующих столбцов: категория, имя, URL, магазин и магазин/URL.
Теперь мои вопросы: 1) Правильно ли это, если я хочу убедиться, что поле url уникально? В настоящее время я использую группу, чтобы объединить всю информацию об одном URL-адресе. Альтернативный подход может заключаться в удалении дубликатов (не уверен, как это сделать). 2) Если текущий подход в порядке, как я могу ускорить этот процесс?
Вы должны использовать ограничения, чтобы не возникало проблема в первую очередь. – ffffff01
Я, вероятно, не понимаю все это. Но * если * вы восстанавливаете свою БД, генерируя * новый * уникальный идентификатор ежедневно, не будет ли это нарушать все закладки ваших пользователей? –