Problem: It's possible for a user to see an empty or incomplete list.
Problem: It's possible for the user to see duplicate entries.
I suspect that you are not using Transactions when making these updates.
With Transactions, users will only see the end result of your [transactional] manipulations. They will never see the intermediate state where duplicates are present (or no rows at all).
Begin transaction Insert/ Update/ Delete, as required Commit Transactional changes should be quick because many DBMSs will block access to the rows or tables being worked on until the Commit (or Rollback) is executed.