Summary
PG/MySQL/SQLite TreeObjectFilterBar.onChanged and sidebar “Filter connections…” call setState on every keystroke. Filter is items.where(contains).toList() plus pin-sort — O(N) string scans and a full subtree rebuild with no debounce (grid filter already uses 150ms).
Scope
- Debounce filter text (same order as
data_grid_filter_bar).
- Keep virtualized
itemExtent lists; debounce only the query/rebuild.
- Sidebar connection search should not rebuild the whole
ConnectionsPanel per character if a cheaper local filter exists.
Out of scope
- Capping
listTables / listBrowsableRelations (unbounded metadata on expand — separate if needed).
Summary
PG/MySQL/SQLite
TreeObjectFilterBar.onChangedand sidebar “Filter connections…” callsetStateon every keystroke. Filter isitems.where(contains).toList()plus pin-sort — O(N) string scans and a full subtree rebuild with no debounce (grid filter already uses 150ms).Scope
data_grid_filter_bar).itemExtentlists; debounce only the query/rebuild.ConnectionsPanelper character if a cheaper local filter exists.Out of scope
listTables/listBrowsableRelations(unbounded metadata on expand — separate if needed).