Skip to content

chore: Report configured index types in query profiles - #1046

Open
cdc-as81 wants to merge 6 commits into
mainfrom
cdc-as81-1039-report-query-index-types
Open

chore: Report configured index types in query profiles#1046
cdc-as81 wants to merge 6 commits into
mainfrom
cdc-as81-1039-report-query-index-types

Conversation

@cdc-as81

@cdc-as81 cdc-as81 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • fixes Add all indexed properties / index status to query profile output #1039
  • Report the configured index type for each query profiling row.
  • Aggregate timings by query shape and index type so runtime index upgrades
    retain separate historical rows.
  • Include unused single- and multi-property indexes as zero-count rows.
  • Canonicalize multi-property identities so equivalent property orderings share
    the same profile.
  • Add the index type to console and JSON profiling output.
  • Document the new profiling behavior.

Unused index rows report zero total duration, with min and max represented
as - in console output and null in JSON.

Example output

Query                         Index Type         Count  Total   Min   Max
Person: (Age)                 unindexed              4  120us  20us  40us
Person: (Age)                 full_index            10   50us   3us   8us
Person: (County, RiskGroup)   value_count_index      0      0      -      -

The separate Person: (Age) rows preserve profiling history when an index is
created or upgraded during execution. The zero-count row shows a configured
index that was never queried.

@RobertJacobsonCDC
RobertJacobsonCDC force-pushed the cdc-as81-1039-report-query-index-types branch from 952ec4e to 055a581 Compare August 18, 2026 14:42
@github-actions

Copy link
Copy Markdown

Benchmark Results

Hyperfine

Command Mean [ms] Min [ms] Max [ms] Relative
large_sir::baseline 3.3 ± 0.0 3.2 3.4 1.00
large_sir::baseline_households 3.3 ± 0.0 3.2 3.3 1.01 ± 0.01
large_sir::entities 6.7 ± 0.1 6.6 7.2 2.07 ± 0.04
large_sir::households 6.6 ± 0.1 6.5 7.0 2.03 ± 0.04

Criterion

Regressions (slower)
Group Bench Param Change CI Lower CI Upper
sampling sampling_single_unindexed_concrete_plus_derived_entities 34.273% 33.960% 34.652%
sampling count_and_sampling_single_unindexed_concrete_plus_derived_entiti 24.325% 19.400% 29.641%
large_dataset bench_query_population_indexed_property_entities 12.293% 10.811% 13.747%
sample_entity sample_entity_single_property_unindexed 100000 7.357% 7.048% 7.616%
counts reindex_after_adding_more_entities 3.032% 2.708% 3.339%
indexing query_people_count_indexed_multi-property_entities 1.529% 1.105% 1.956%
Improvements (faster)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_match_entity -31.112% -33.199% -28.867%
sample_entity sample_entity_single_property_indexed 10000 -26.405% -26.588% -26.209%
sample_entity sample_entity_single_property_indexed 1000 -24.951% -25.522% -24.344%
sample_entity sample_entity_single_property_unindexed 1000 -19.256% -20.636% -17.849%
sample_entity sample_entity_single_property_unindexed 10000 -13.594% -16.854% -9.914%
sample_entity sample_entity_multi_property_indexed 1000 -12.828% -13.249% -12.360%
sample_entity sample_entity_multi_property_indexed 10000 -12.178% -12.568% -11.873%
sample_entity sample_entity_multi_property_indexed 100000 -6.369% -6.571% -6.135%
sample_entity sample_entity_whole_population 1000 -2.609% -3.134% -2.205%
indexing query_people_multiple_individually_indexed_properties_entities -2.543% -2.767% -2.327%
sampling count_and_sampling_single_known_length_entities -2.511% -3.187% -1.866%
counts multi_property_indexed_entities -1.657% -2.190% -1.125%
indexing query_people_count_multiple_individually_indexed_properties_enti -1.388% -1.499% -1.258%
Unchanged / inconclusive (CI crosses 0%)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_filter_unindexed_entity 2.960% -0.645% 6.439%
indexing with_query_results_multiple_individually_indexed_properties_enti 1.491% 0.944% 2.146%
sampling sampling_multiple_unindexed_entities 1.339% 0.580% 2.162%
counts single_property_indexed_entities -1.305% -1.968% -0.744%
large_dataset bench_query_population_multi_indexed_entities -1.212% -2.268% -0.240%
examples example-births-deaths 1.177% 0.914% 1.435%
sample_entity sample_entity_whole_population 10000 1.075% -0.018% 3.547%
indexing query_people_indexed_multi-property_entities -0.984% -1.261% -0.757%
sampling sampling_multiple_known_length_entities -0.940% -1.392% -0.608%
counts multi_property_unindexed_entities -0.891% -1.220% -0.652%
sampling sampling_single_unindexed_entities 0.787% 0.116% 1.457%
large_dataset bench_filter_indexed_entity 0.636% -1.399% 2.649%
algorithm_benches algorithm_sampling_multiple_known_length -0.611% -0.934% -0.218%
counts index_after_adding_entities 0.607% 0.462% 0.752%
sampling sampling_multiple_l_reservoir_entities -0.476% -0.567% -0.386%
indexing query_people_count_single_indexed_property_entities -0.471% -1.026% -0.057%
sampling sampling_single_known_length_entities -0.470% -1.121% 0.315%
large_dataset bench_query_population_property_entities -0.461% -1.179% 0.207%
sampling sampling_single_l_reservoir_entities -0.444% -0.521% -0.367%
large_dataset bench_query_population_derived_property_entities 0.392% -0.108% 0.915%
examples example-basic-infection -0.391% -0.815% 0.031%
counts concrete_plus_derived_unindexed_entities 0.363% 0.032% 0.842%
algorithm_benches algorithm_sampling_single_known_length 0.356% -0.031% 0.905%
indexing with_query_results_indexed_multi-property_entities 0.331% 0.052% 0.687%
algorithm_benches algorithm_sampling_multiple_l_reservoir 0.311% -0.056% 0.762%
large_dataset bench_query_population_multi_unindexed_entities -0.243% -1.133% 0.586%
indexing with_query_results_single_indexed_property_entities -0.230% -0.836% 0.393%
sample_entity sample_entity_whole_population 100000 0.146% -0.204% 0.721%
sample_entity sample_entity_single_property_indexed 100000 0.135% -0.499% 0.652%
counts single_property_unindexed_entities -0.105% -0.401% 0.274%
algorithm_benches algorithm_sampling_single_l_reservoir 0.049% -0.146% 0.326%
algorithm_benches algorithm_sampling_single_rand_reservoir -0.031% -0.130% 0.063%
indexing query_people_single_indexed_property_entities 0.016% -0.300% 0.341%
Not Compared (no baseline yet)
Group Bench Reason
(none)

@CDCgov CDCgov deleted a comment from github-actions Bot Aug 18, 2026
@github-actions

Copy link
Copy Markdown

Benchmark Results

Hyperfine

Command Mean [ms] Min [ms] Max [ms] Relative
large_sir::baseline 3.3 ± 0.2 3.2 4.3 1.00
large_sir::baseline_households 3.4 ± 0.1 3.3 3.6 1.01 ± 0.06
large_sir::entities 7.5 ± 0.6 7.0 9.5 2.25 ± 0.21
large_sir::households 7.0 ± 0.1 6.8 7.4 2.09 ± 0.11

Criterion

Regressions (slower)
Group Bench Param Change CI Lower CI Upper
counts single_property_indexed_entities 48.362% 43.303% 53.874%
large_dataset bench_query_population_indexed_property_entities 35.371% 32.976% 38.002%
sample_entity sample_entity_single_property_indexed 10000 6.203% 5.620% 6.842%
sample_entity sample_entity_single_property_indexed 100000 4.871% 4.569% 5.199%
sample_entity sample_entity_single_property_indexed 1000 4.843% 4.007% 5.567%
sampling sampling_multiple_unindexed_entities 4.200% 4.031% 4.338%
sample_entity sample_entity_whole_population 1000 4.024% 2.008% 6.755%
sample_entity sample_entity_whole_population 100000 3.499% 2.465% 4.523%
sampling sampling_single_unindexed_concrete_plus_derived_entities 2.061% 1.739% 2.397%
Improvements (faster)
Group Bench Param Change CI Lower CI Upper
sample_entity sample_entity_single_property_unindexed 100000 -10.236% -10.499% -9.935%
indexing query_people_multiple_individually_indexed_properties_entities -3.961% -4.370% -3.551%
sampling sampling_single_known_length_entities -3.588% -4.104% -3.038%
sample_entity sample_entity_multi_property_indexed 100000 -3.375% -3.985% -2.824%
sample_entity sample_entity_multi_property_indexed 10000 -3.367% -3.724% -2.890%
sample_entity sample_entity_multi_property_indexed 1000 -3.081% -3.425% -2.773%
sample_entity sample_entity_single_property_unindexed 10000 -2.426% -3.651% -1.332%
sampling count_and_sampling_single_known_length_entities -1.907% -2.734% -1.257%
sampling sampling_multiple_known_length_entities -1.866% -2.129% -1.550%
sampling sampling_multiple_l_reservoir_entities -1.679% -1.813% -1.564%
counts multi_property_unindexed_entities -1.557% -1.883% -1.282%
Unchanged / inconclusive (CI crosses 0%)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_filter_unindexed_entity 3.014% -0.537% 6.777%
examples example-births-deaths -2.177% -6.322% 1.301%
examples example-basic-infection -1.868% -6.417% 1.872%
counts multi_property_indexed_entities -1.687% -2.374% -0.942%
large_dataset bench_query_population_derived_property_entities 1.527% 0.707% 2.192%
indexing query_people_single_indexed_property_entities -1.434% -4.753% 1.804%
indexing with_query_results_indexed_multi-property_entities -1.397% -2.361% -0.655%
sampling count_and_sampling_single_unindexed_concrete_plus_derived_entiti 1.214% 0.969% 1.476%
counts reindex_after_adding_more_entities -1.169% -1.678% -0.673%
sampling sampling_single_l_reservoir_entities 1.147% 0.462% 1.698%
counts concrete_plus_derived_unindexed_entities -1.087% -1.600% -0.648%
counts index_after_adding_entities 1.021% 0.651% 1.429%
indexing query_people_indexed_multi-property_entities -0.974% -1.288% -0.614%
indexing query_people_count_single_indexed_property_entities -0.960% -1.552% -0.396%
large_dataset bench_query_population_multi_unindexed_entities -0.819% -1.385% -0.348%
sample_entity sample_entity_single_property_unindexed 1000 -0.769% -1.457% -0.102%
counts single_property_unindexed_entities -0.745% -1.202% -0.301%
large_dataset bench_query_population_multi_indexed_entities -0.682% -1.008% -0.366%
sampling sampling_single_unindexed_entities 0.560% 0.492% 0.633%
indexing with_query_results_multiple_individually_indexed_properties_enti -0.554% -1.134% -0.106%
algorithm_benches algorithm_sampling_single_l_reservoir -0.498% -1.823% 0.678%
algorithm_benches algorithm_sampling_single_known_length 0.382% -0.053% 0.959%
indexing query_people_count_indexed_multi-property_entities 0.342% -0.265% 1.016%
indexing query_people_count_multiple_individually_indexed_properties_enti 0.171% -0.359% 0.652%
algorithm_benches algorithm_sampling_multiple_known_length -0.158% -0.794% 0.446%
algorithm_benches algorithm_sampling_single_rand_reservoir 0.101% -0.379% 0.632%
algorithm_benches algorithm_sampling_multiple_l_reservoir -0.093% -0.483% 0.377%
large_dataset bench_query_population_property_entities 0.090% -0.274% 0.475%
large_dataset bench_filter_indexed_entity -0.088% -1.875% 1.730%
sample_entity sample_entity_whole_population 10000 0.067% -0.896% 1.022%
indexing with_query_results_single_indexed_property_entities -0.056% -0.800% 0.726%
large_dataset bench_match_entity 0.023% -0.429% 0.528%
Not Compared (no baseline yet)
Group Bench Reason
(none)

Base automatically changed from cdc-as81-1035-add-wasm-support-for-query-profiling to main August 26, 2026 17:45
@github-actions

Copy link
Copy Markdown

Benchmark Results

Hyperfine

Command Mean [ms] Min [ms] Max [ms] Relative
large_sir::baseline 2.7 ± 0.0 2.6 2.9 1.00
large_sir::baseline_households 2.7 ± 0.0 2.6 2.8 1.00 ± 0.02
large_sir::entities 6.2 ± 0.1 6.1 6.5 2.33 ± 0.05
large_sir::households 6.0 ± 0.1 5.9 6.7 2.26 ± 0.06

Criterion

Regressions (slower)
Group Bench Param Change CI Lower CI Upper
counts single_property_indexed_entities 25.590% 18.613% 31.908%
examples example-basic-infection 14.307% 13.419% 15.150%
sampling sampling_single_unindexed_entities 11.313% 10.762% 11.868%
large_dataset bench_query_population_multi_indexed_entities 9.649% 8.357% 10.908%
sampling sampling_multiple_unindexed_entities 8.454% 8.069% 8.798%
indexing query_people_indexed_multi-property_entities 4.065% 3.830% 4.307%
indexing query_people_count_indexed_multi-property_entities 3.725% 3.397% 4.100%
large_dataset bench_query_population_derived_property_entities 3.224% 2.367% 4.032%
indexing query_people_multiple_individually_indexed_properties_entities 2.943% 2.766% 3.106%
sample_entity sample_entity_whole_population 100000 2.210% 1.172% 3.218%
examples example-births-deaths 2.087% 1.741% 2.482%
sample_entity sample_entity_multi_property_indexed 1000 1.951% 1.379% 2.590%
sample_entity sample_entity_multi_property_indexed 10000 1.866% 1.200% 2.588%
counts index_after_adding_entities 1.761% 1.557% 1.970%
Improvements (faster)
Group Bench Param Change CI Lower CI Upper
sample_entity sample_entity_single_property_unindexed 10000 -12.511% -13.005% -12.139%
sample_entity sample_entity_single_property_unindexed 1000 -5.178% -5.619% -4.703%
indexing with_query_results_indexed_multi-property_entities -4.219% -4.738% -3.715%
counts reindex_after_adding_more_entities -2.192% -2.459% -1.938%
Unchanged / inconclusive (CI crosses 0%)
Group Bench Param Change CI Lower CI Upper
indexing query_people_single_indexed_property_entities 3.702% -0.592% 8.132%
large_dataset bench_filter_unindexed_entity -1.148% -3.884% 1.717%
sampling sampling_multiple_known_length_entities -1.142% -1.835% -0.676%
indexing query_people_count_single_indexed_property_entities -1.090% -1.859% -0.377%
sample_entity sample_entity_single_property_unindexed 100000 -1.004% -2.517% 0.092%
sampling sampling_multiple_l_reservoir_entities -0.869% -1.490% -0.460%
sample_entity sample_entity_single_property_indexed 1000 0.715% 0.310% 1.058%
counts multi_property_indexed_entities -0.675% -2.042% 0.747%
indexing with_query_results_multiple_individually_indexed_properties_enti -0.660% -1.721% 0.154%
indexing with_query_results_single_indexed_property_entities -0.660% -1.212% -0.184%
sampling sampling_single_l_reservoir_entities -0.645% -0.818% -0.494%
large_dataset bench_query_population_indexed_property_entities 0.639% -0.007% 1.346%
sampling count_and_sampling_single_known_length_entities 0.586% 0.106% 1.106%
large_dataset bench_match_entity 0.413% -0.131% 1.010%
sample_entity sample_entity_multi_property_indexed 100000 -0.358% -0.639% -0.005%
sampling count_and_sampling_single_unindexed_concrete_plus_derived_entiti -0.351% -0.686% -0.014%
sample_entity sample_entity_whole_population 1000 0.320% -0.188% 0.869%
large_dataset bench_filter_indexed_entity -0.306% -2.114% 1.429%
algorithm_benches algorithm_sampling_single_known_length 0.298% -0.050% 0.739%
sampling sampling_single_known_length_entities 0.272% -0.238% 0.798%
sample_entity sample_entity_whole_population 10000 -0.238% -0.595% 0.095%
counts concrete_plus_derived_unindexed_entities 0.229% -0.621% 1.309%
large_dataset bench_query_population_property_entities 0.221% -0.212% 0.798%
indexing query_people_count_multiple_individually_indexed_properties_enti 0.189% -0.220% 0.858%
algorithm_benches algorithm_sampling_multiple_known_length -0.145% -1.169% 0.669%
sampling sampling_single_unindexed_concrete_plus_derived_entities -0.078% -0.360% 0.191%
algorithm_benches algorithm_sampling_single_rand_reservoir -0.069% -0.375% 0.184%
sample_entity sample_entity_single_property_indexed 100000 -0.050% -0.427% 0.351%
sample_entity sample_entity_single_property_indexed 10000 -0.039% -0.304% 0.215%
counts multi_property_unindexed_entities 0.032% -0.416% 0.337%
algorithm_benches algorithm_sampling_multiple_l_reservoir 0.027% -0.368% 0.379%
algorithm_benches algorithm_sampling_single_l_reservoir -0.022% -0.362% 0.326%
counts single_property_unindexed_entities 0.004% -0.174% 0.202%
large_dataset bench_query_population_multi_unindexed_entities 0.001% -0.280% 0.284%
Not Compared (no baseline yet)
Group Bench Reason
(none)

github-actions Bot added a commit that referenced this pull request Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add all indexed properties / index status to query profile output

2 participants