Content
View differences
Updated by Jens Ulferts about 9 years ago
Two n+1 queries in api/v3/work\_packages degrade performance:
...
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CustomOption Load (0.4ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 881 LIMIT 1 [["id", 881], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 890 LIMIT 1 [["id", 890], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 829 LIMIT 1 [["id", 829], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 857 LIMIT 1 [["id", 857], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 865 LIMIT 1 [["id", 865], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1 [["id", 869], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 881 LIMIT 1 [["id", 881], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 890 LIMIT 1 [["id", 890], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 827 LIMIT 1 [["id", 827], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1 [["id", 869], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 886 LIMIT 1
...
...
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 268 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 271 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 292 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 295 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.2ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 304 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 364 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 367 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.2ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 379 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.4ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 382 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.8ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 421 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.9ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 436 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 439 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.3ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 442 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.7ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 445 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
...
...
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CustomOption Load (0.4ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 881 LIMIT 1 [["id", 881], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 890 LIMIT 1 [["id", 890], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 829 LIMIT 1 [["id", 829], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 857 LIMIT 1 [["id", 857], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 865 LIMIT 1 [["id", 865], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1 [["id", 869], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 881 LIMIT 1 [["id", 881], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 890 LIMIT 1 [["id", 890], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 827 LIMIT 1 [["id", 827], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CACHE (0.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 869 LIMIT 1 [["id", 869], ["LIMIT", 1]]
Query Trace > app/models/custom_value/list_strategy.rb:33:in `typed_value'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`id` = 886 LIMIT 1
...
...
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 268 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 271 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.5ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 292 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 295 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.2ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 304 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.0ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 364 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 367 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.2ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 379 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.4ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 382 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.8ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 421 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.9ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 436 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.6ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 439 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (1.3ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 442 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
CustomOption Load (0.7ms) SELECT `custom_options`.* FROM `custom_options` WHERE `custom_options`.`custom_field_id` = 445 ORDER BY `custom_options`.`position` ASC
Query Trace > app/models/queries/work_packages/filter/custom_field_filter.rb:39:in `allowed_values'
...