/ / INSERT ... НА DUPLICATE KEY UPDATE проти TRUNCATE / INSERT

INSERT ... НА ДУЛІКАТИ КЛЮЧОВОГО UPDATE v. TRUNCATE / INSERT - mysql, database

Наразі я переписую скрипт даних pushвитягує дані з бази даних MSSQL на іншому сервері, а потім вставляє дані в базу даних MySQL. Цей процес cron "ed для запуску нічний і обробляється через PHP.

Оригінальний сценарій TRUNCATEs таблиць і повторно вставляє всі дані щоночі. Деякі таблиці мають первинні, унікальні ключі, що надходять з бази даних MSSQL. Деяких таблиць немає.

Я розглядаю додавання загальних первинних ключів до таблиць MySQL, які в даний час не мають їх, так що я можу зробити INSERT ... ON DUPLICATE KEY UPDATE замість спорожнення таблиць і повторного вставлення даних щоночі. Первинні ключі будуть використовуватися лише за іншої причини, ніж цей процес.

Чи буде процес швидше / менш ресурсомістким, якщо я це зробив INSERT ... ON DUPLICATE KEY UPDATE проти TRUNCATE і потім INSERT як зараз працює сценарій? Чи варто турбуватися про створення загальних первинних ключів на таблицях, які в даний час не мають їх просто зробити INSERT ... ON DUPLICATE KEY UPDATE? Я шукаю найкращу продуктивність цього сценарію.

Відповіді:

0 для відповіді № 1

Важко дати загальну відповідь беззнання специфіки ваших даних. Я хотів би знати розмір таблиць у рядках, і якщо ви використовуєте Innodb. Однак, якщо таблиці малі <1000 рядків, і / або не використовуючи Innodb, я б просто залишив як є. Однак, якщо у вас є великі таблиці, я бачив значні поліпшення швидкості за допомогою методу INSERT..ON DUPLICATE.

Хорошим процесом може бути перемикання однієї або двох великих таблиць і вимірювання покращення швидкості. Якщо варто, то продовжуйте роботу з іншими.