В настоящее время я работаю над проектом с MySQL Db более 8 миллионов строк. Мне была предоставлена часть его для проверки некоторых запросов. Он имеет около 20 столбцов, из которых 5 мне полезны. А именно: First_Name, Last_Name, Address_Line1, Address_Line2, Address_Line3, RefundID
Обновление с подзапросом никогда не завершено
Я должен создать уникальный, но случайный RefundID
для каждой строки, это не проблема. Проблема заключается в создании таких жеRefundID
для тех строк, у которых First_Name, Last_Name, Address_Line1, Address_Line2, Address_Line3
такой же.
Это моя первая работа, связанная с MySQL с таким большим количеством строк. До сих пор я создал эти запросы:
запрос-- Creating Teporary Table --
CREATE temporary table tempT (SELECT tt.First_Name, count(tt.Address_Line1) as
a1, count(tt.Address_Line2) as a2, count(tt.Address_Line3) as a3, tt.RefundID
FROM `tempTable` tt GROUP BY First_Name HAVING a1 >= 2 AND a2 >= 2 AND a3 >= 2);
-- Updating Rows with First_Name from tempT --
UPDATE `tempTable` SET RefundID = FLOOR(RAND()*POW(10,11))
WHERE First_Name IN (SELECT First_Name FROM tempT WHERE First_Name is not NULL);
Это обновление не продолжает работать, но никогда не заканчивается, tempT
имеет более 30K строк. Затем этот запрос будет запущен в основной БД с более чем 800 К строк.
Может ли кто-нибудь помочь мне с этим?
С уважением
Привет Спасибо за ваш ответ, RefundID должен быть уникальными значениями 9-12 цифр. MD5 имеет 32 цифры, я думаю (плохая числовая память). Я должен дать одинаковый идентификатор каждой строке, где 'First_Name, Last_Name, Address_Line1, Address_Line2, Address_Line3' одинаковы. С уважением –
Да, я подозревал, что это может быть так и явным образом рассмотрел это в моем ответе выше. – symcbean