СУБД может сама проверить наличие записи перед вставкой либо по первичному ключу либо по другому уникальному ключу.
INSERT ... ON DUPLICATE KEY UPDATE - можно указать какие поля обновлять при нахождении. Допустим, обновить дату, наименование и т.д.
Необходимо добавить уникальный индекс, если отсутствует.
при перестроении индексов запрос начинает заметно тормозить
Я не уверен в этом. Как это было замерено?