DBAL-1106 Improve schema introspection performance on Oracle #768
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.
This PR improves the overall schema introspection performance on Oracle by optimizing some of the
getList*()
method SQL queries in the platform.Unfortunately Oracle system views are rather slow, especially when joining tables. Using subqueries can improve the execution time a lot.
Improved queries
(the times have been measured using an exemplary query from the functional test suite)
getListTableForeignKeysSQL()
: Down from~2.33s
to~0.68s
per querygetListTableColumnsSQL()
: Down from~0.49s
to~0.14s
per querygetListTableIndexesSQL()
: Down from~0.5s
to~0.25s
per queryOverall improvement of
OracleSchemaManagerTest
from~100s
to~37.5s
.I was quite impressed by the performance improvements :)