mirror of
https://github.com/MariaDB/server.git
synced 2026-10-23 18:49:29 +03:00
(Variant 3, more comments) When multiple indexes produce ordering that matches the ORDER BY ... LIMIT clause, like INDEX idx1(kp1, kp2) INDEX idx2(kp2) and the query with WHERE kp1=const ORDER BY kp2 LIMIT 2 then test_if_cheaper_ordering() in pre-11.0 versions will choose the index with the smallest KEY::user_defined_key_parts (idx2 in this example). This can produce a much worse query plan. The fix is to do what MariaDB 11.0 would do: use the index for which we have the cheapest access method. The cost of access method here takes into account that we will stop after producing #LIMIT rows. The fix is controlled by the @@optimizer_adjust_secondary_key_costs=fix_order_by_index_choice flag and is OFF by default.
18 KiB
18 KiB