reuse prepared statement in multi_insert #11
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
currently, if Page 2 is the same size as Page 1, we'll reuse the
String
with the query in it but we still go through the rusqlite statement cache to get the prepared statement. profile data showed if we spent ~4 seconds inStatement::execute_with_bound_parameters()
we were spending ~2 seconds inStatementCache::get()
, which can probably be reclaimedthis PR reuses the actual
PreparedStatement
between loop iterations. it also skips clearing the prepared statement cache at the end of the function, which seems to drive most of the time savings. with my unscientific local testing, this appears to save a little less than 1s for my 110mb pyreport, going from a little less than 9s to about 8s