У меня есть функция, которая каждую минуту запрашивает Google BigQuery, и я хочу использовать результаты BigQuery для обновления строк в другой реляционной базе данных.
Я пытался сделать что-то вроде этого:
BEGIN TRANSACTION
UPDATE MyTable SET MyField = BigQueryResult_Row1_MyField WHERE a_id = BigQueryResult_Row1_a_id
UPDATE MyTable SET MyField = BigQueryResult_Row2_MyField WHERE a_id = BigQueryResult_Row2_a_id
UPDATE MyTable SET MyField = BigQueryResult_Row3_MyField WHERE a_id = BigQueryResult_Row3_a_id
.
.
.
UPDATE MyTable SET MyField = BigQueryResult_RowN_MyField WHERE a_id = BigQueryResult_RowN_a_id
COMMIT TRANSACTION
Это оператор UPDATE
для каждой строки большого запроса.Я не могу сделать один оператор UPDATE
в сочетании с оператором SELECT
, потому что данные поступают из BigQuery, а не из другой таблицы базы данных.
При попытке выполнить эту транзакцию я получаю сообщение об ошибке тайм-аута, поэтому я хочуСпросите: это правильный способ делать сотни обновлений одновременно?В некоторых случаях может быть даже тысячи обновлений одновременно.Как я могу сделать это лучше?