Это, вероятно, распространенная ситуация, но я не смог найти конкретный ответ в SO или Google.
У меня есть большая таблица (> 10 миллионов строк) отношений друзей в базе данных MySQL, котораяочень важно и должно поддерживаться таким образом, чтобы не было повторяющихся строк.В таблице хранятся пользовательские идентификаторы.SQL для таблицы:
CREATE TABLE possiblefriends(
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
user INT,
possiblefriend INT)
Таблица работает так, что у каждого пользователя есть около 1000 или около того «возможных друзей», которые обнаружены и должны быть сохранены, но дублирование «возможных друзей» необходимоследует избегать.
Проблема заключается в том, что из-за дизайна программы в течение дня мне нужно добавить в таблицу 1 миллион или более строк, которые могут быть или не быть повторяющимися записями строк.Казалось бы, простой ответ - проверить каждую строку, чтобы увидеть, является ли она дубликатом, а если нет, то вставить ее в таблицу.Но этот метод, вероятно, станет очень медленным, так как размер таблицы увеличится до 100 миллионов строк, 1 миллиарда строк или выше (что я ожидаю в ближайшее время).
Какой самый лучший (то есть самый быстрый) способсохранить эту уникальную таблицу?
Мне не нужно иметь таблицу с только уникальными значениями всегда под рукой.Мне просто нужно это один раз в день для пакетных работ.В этом случае я должен создать отдельную таблицу, которая просто вставляет все возможные строки (содержащие повторяющиеся строки и все), а затем в конце дня создает вторую таблицу, которая вычисляет все уникальные строки в первой таблице?
Если нет, каков наилучший способ для этой таблицы в долгосрочной перспективе?
(Если индексы являются наилучшим долгосрочным решением, скажите, пожалуйста, какие индексы использовать)