Я бы хотел сделать следующее:
cur.execute("SELECT key, SUM(val) FROM table GROUP BY key")
cur.executemany("INSERT INTO table_sums VALUES(?,?)",(row for row in cur))
в одном операторе SQLite с пакетной обработкой, если это возможно, то есть он суммирует только количество ключей, вставляет и продолжает до тех пор, пока все не будут обработаны.
Очевидно, я сейчас использую Python, но, поскольку я прошу одно утверждение (если оно существует), я не думаю, что это должно иметь значение. Если он не существует, возможно, есть эффективный (!) Обходной путь в Python?
РЕДАКТИРОВАТЬ: Чтобы избежать запроса SELECT WHERE
, на самом деле было бы желательно не создавать полные суммы для поднабора ключей, а просто суммировать по первым n
строкам и сохранять результирующие итоги, затем переходите к следующему n
...