diff options
author | unknown <igor@olga.mysql.com> | 2007-08-02 12:45:56 -0700 |
---|---|---|
committer | unknown <igor@olga.mysql.com> | 2007-08-02 12:45:56 -0700 |
commit | c90493749aa8736c76b5765cda0ca925864bbe37 (patch) | |
tree | cb69ff6598e568046e57c591baf10d4a49f2d5b7 /mysql-test/r/group_min_max.result | |
parent | baf24e69daf32141dda59b6d7fe817cc688b9f88 (diff) | |
download | mariadb-git-c90493749aa8736c76b5765cda0ca925864bbe37.tar.gz |
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
If there was a ref/range access to the table whose rows were required
to be ordered in the result set the optimizer always employed this access
though a scan by a different index that was compatible with the required
order could be cheaper to produce the first L rows of the result set.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
mysql-test/r/distinct.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/endspace.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/group_by.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/group_min_max.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/innodb.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/innodb_mysql.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/merge.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/order_by.result:
Added a test case for bug #28404.
mysql-test/r/select_found.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/r/subselect.result:
Adjusted results for test cases affected fy the fix for bug #28404.
mysql-test/t/distinct.test:
Changed a test case after adding the fix for bug #28404.
mysql-test/t/order_by.test:
Added a test case for bug #28404.
sql/sql_select.cc:
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
Now for such queries the optimizer makes a choice between the cheapest
ref/range accesses not compatible with the given order and index scans
compatible with it.
Modified the function test_if_skip_sort_order to make the above mentioned
choice cost based.
sql/sql_select.h:
Fixed bug#28404.
This patch adds cost estimation for the queries with ORDER BY / GROUP BY
and LIMIT.
Added a new field fot the JOIN_TAB structure.
Diffstat (limited to 'mysql-test/r/group_min_max.result')
-rw-r--r-- | mysql-test/r/group_min_max.result | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/mysql-test/r/group_min_max.result b/mysql-test/r/group_min_max.result index b6bf7260dc2..02b1459afd0 100644 --- a/mysql-test/r/group_min_max.result +++ b/mysql-test/r/group_min_max.result @@ -1963,20 +1963,20 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using temporary; Using filesort explain select a1,a2,count(a2) from t1 group by a1,a2,b; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 Using index +1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using index explain extended select a1,a2,count(a2) from t1 where (a1 > 'a') group by a1,a2,b; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 75.00 Using where; Using index +1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index Warnings: Note 1003 select `test`.`t1`.`a1` AS `a1`,`test`.`t1`.`a2` AS `a2`,count(`test`.`t1`.`a2`) AS `count(a2)` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b` explain extended select sum(ord(a1)) from t1 where (a1 > 'a') group by a1,a2,b; id select_type table type possible_keys key key_len ref rows filtered Extra -1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_1 163 NULL 128 75.00 Using where; Using index +1 SIMPLE t1 index idx_t1_0,idx_t1_1,idx_t1_2 idx_t1_2 147 NULL 128 75.00 Using where; Using index Warnings: Note 1003 select sum(ord(`test`.`t1`.`a1`)) AS `sum(ord(a1))` from `test`.`t1` where (`test`.`t1`.`a1` > _latin1'a') group by `test`.`t1`.`a1`,`test`.`t1`.`a2`,`test`.`t1`.`b` explain select distinct(a1) from t1 where ord(a2) = 98; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t1 index NULL idx_t1_1 163 NULL 128 Using where; Using index +1 SIMPLE t1 index NULL idx_t1_2 147 NULL 128 Using where; Using index select distinct(a1) from t1 where ord(a2) = 98; a1 a @@ -2256,7 +2256,7 @@ EXPLAIN SELECT 1 FROM t1 AS t1_outer WHERE a IN (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2); id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1_outer index NULL a 10 NULL 15 Using where; Using index -2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 15 Using index +2 DEPENDENT SUBQUERY t1 index NULL a 10 NULL 1 Using index EXPLAIN SELECT 1 FROM t1 AS t1_outer GROUP BY a HAVING a > (SELECT max(b) FROM t1 GROUP BY a HAVING a < 2); id select_type table type possible_keys key key_len ref rows Extra |