У меня есть таблица SQL, подобная следующие:SQL - быстрый способ обновить столбец записи
id | text | other_columns...
----------------------------
0 | a | ...
1 | b | ...
2 | c | ...
Мне нужно применить некоторые сложные операции со значениями в text
столбце, а затем обновить поля с новые значения.
// Get all the current values.
entries = SELECT id,text FROM foo_table;
// Apply some complex operation to the text values (this part is Python, not SQL).
foreach entry in entries
entry.text = f(entry.text)
// Update the text fields (1 UPDATE per entry).
foreach entry in entries
UPDATE foo_table SET text=entry.text WHERE id=entry.id;
Это приводит к таблице, как это, с обновленными текстовых значений:
id | text | other_columns...
----------------------------
0 | x | ...
1 | y | ...
2 | z | ...
Это занимает ~ 1 мс на UPDATE, и у меня есть ~ .5 млн записей, что приводит к ~ 8 минут выполнение. Я выполняю команды SQL (1000 за раз), но это все еще кажется очень медленным/неэффективным.
Есть ли лучший (более быстрый) способ сделать это? Благодарю.
Что такое сложная операция (если вы можете нам сказать)? Возможно, это можно сделать в SQL, и это определенно ускорит его. –
Может ли предоставить данные для создания stmt с показанными индексами – Drew
@ PabloGonzálezAlba «Комплексная операция» выполняет кучу пользовательской строковой токенизации/подстановки и ссылки на внешние источники данных. К сожалению, это невозможно сделать в SQL (и даже если это можно было бы сделать, это нереально дорого для повторного внедрения в SQL). – smg