Ускорение запросов insert и update

Суть в ежедневном обновлении индекса. суммарно данных порядка 200 млн
200 млн апдейтов это конечно очень много. Если кто-то знаком с архитектурой то подскажите как будет быстрее.
Вариант 1.
Одиночные запросы inrert into или update или replace into
Это самый долгий вариант проверено на опыте. собирать запросы в коде и отправлять по одному.
Вариант 2.
Пакетные или составные запросы в строку. insert into (field1,field2,field3,field4) values (1,1,1,1),(2,1,1,1),(3,1,1,1),(4,1,1,1)
составляем такую строку на обновление тысячи элементов и отправляем запрос.
Работает быстро но надо еще быстрее.
Вариант 3.
при добавлении новых данных пользуемся пунктом 2. Для обновлении данных создаем отдельно массивы обновления. т.е. для начала запрашиваем в БД хранимые элементы а далее проверяем какие поля изменились и только те поля которые изменились их и обновляем.
отдельно запрос на обновление field1 отдельно на field2 отдельно на field3 и отдельно запрос на обновление field4. Соответственно если всего записей 200 млн то поле field могло вообще не измениться и запроса на на его изменение не надо будет отправлять. Поле field2 изменилось только к примеру у 20 тыс записей, поле field3 только у 200 тыс записей а field4 у 20 млн записей. И логично предположить что такие запросы на изменение данных будут работать быстрее, но для составление такого алгоритма обновления нужно делать запросы выборки данных и самостоятельно проверять изменилось ли поле или нет.
Практически проверить к сожалению не могу на рабочей базе. Но вдруг.
Так вот вопрос в том будет ли такой запрос работать быстрее? или мантикора сама посмотрит и увидит что хоть я и отправил первые три поля, по варианту 2, но они не измененные и сама проверить и изменит только те данные которые были изменены или же она сделает перезапись собственных данных без проверки было ли изменение. А как нам известно чтение всегда быстрее чем запись данных.
Либо может есть какой-то более быстрый вариант добавления, обновления данных?

частичный update вы можете выполнить только на атрибутах, если вам нужно обновить значения полнотекстовых полей - то вам нужно вставлять целиком документ и самый быстрый способ это делать replace батчами как у вас описано во 2ом пункте

немного смутил меня Ваш комментарий. т.е. если у меня структура индекса id field1 field2 field3 field4 field5 name
т.е. id + 5 атрибутов и 1 текстовый name по которому идет поиск то чтобы обновить name мне надо отправлять все field пять штук? как то не логично если изменения были только в name.
field1-5 числовые данные для фильтрации

да, вы НЕ можете обновить данные полнотекстовых полей
вы можете обновить только атрибуты

или вы можете вставить заново целиком документ, все поля и атрибуты

А как это проявляется? Ошибка какая-то или просто документ не обновляется?
REPLACE INTO (id,field1,field2) (1,578,964),(2,215,147) - т.е. такое будет работать и никаких ошибок не будет
REPLACE INTO (id,name) (1,“word text1”),(2,“word text2”) - а вот такой запрос не сработает?
но однако вот такой запрос
REPLACE INTO (id,field1,field2,name) (1,578,964,“word text1”),(2,215,147,“word text2”) - сработает без проблем даже если field1 и field2 без изменений остаются.

вставить можно как угодно, вы попробуйте найти после вставки и поймёте, что есть а чего нет