Я использую интеграцию данных Pentaho для извлечения больших данных JSON в базу данных MySQL.Что такое быстрый запрос на удаление повторяющихся первичных ключей вместо их обновления (сохранение последней записи)?
В любом случае, конечно, есть возможность чистой вставки таблицы, но также вставка/обновление таблицы (она будет искать ключ для обновления, а если не найден, вставьте строку).
Эти данные являются в основном текущим представлением/состоянием билетов, поэтому мне нужны все столбцы данных для данной строки, обновленные на основе уникального идентификатора билета.
С Pentaho и, вероятно, большинством приложений, обновление происходит намного медленнее, чем вставка. Тем более, что, по крайней мере, с этим приложением вы можете одновременно иметь до 25 соединений, записывающих (вставляя) данные, но только (1) обрабатывать процесс поиска, а затем записывать.
Поэтому я предпочел бы сделать следующее: вставить все данные (один раз в день или около того) .., а затем сразу же запустить запрос, который удаляет все повторяющиеся идентификаторы билетов - EXCEPT для одного с наибольшим (aka latest) «время обновления».
Мне кажется, что это будет намного быстрее - и мне интересно, как это сделать в MySQL. Я думаю, что это что-то вроде
Удалить из [table-name], где ticket_id = ticket_id и update_time < update_time, но я не уверен, что это правильно или переменные необходимы для сравнения данных в межстрочном порядке.
В MySQL вы не можете иметь повторяющиеся первичные ключи в любом случае. Поэтому, если вставка имеет существующий первичный ключ, MySQL автоматически отклонит. –
Ах, я, возможно, неправильно понял. Я просто использую идентификатор билета как уникальный идентификатор. Я не думаю, что на самом деле я настроил его как первичный ключ. – user45867
Уникальный идентификатор не позволяет дублировать. Что вы на самом деле имеете? (Вставьте инструкцию CREATE TABLE в свой вопрос.) –