1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-02 14:47:37 +03:00

MDEV-18094: Query with order by limit picking index scan over filesort

In the function test_if_cheaper_ordering we make a decision if using an index is better than
using filesort for ordering. If we chose to do range access then in test_quick_select we
should make sure that cost for table scan is set to DBL_MAX so that it is not picked.
This commit is contained in:
Varun Gupta
2019-09-21 12:14:05 +05:30
parent 7a4019a1c7
commit 896974fc3d
6 changed files with 62 additions and 9 deletions

View File

@ -61,3 +61,27 @@ from t1
where key1<3 or key2<3;
drop table t0, t1;
--echo #
--echo # MDEV-18094: Query with order by limit picking index scan over filesort
--echo #
create table t0 (a int);
INSERT INTO t0 VALUES (0),(0),(0),(0),(2),(0),(0),(1),(1),(0);
CREATE TABLE t1 (
a int(11),
b int(11),
c int(11),
KEY a_c (a,c),
KEY a_b (a,b)
) ENGINE=InnoDB;
insert into t1 select A.a , B.a, C.a from t0 A, t0 B, t0 C;
--echo # should use ref access
explain select a,b,c from t1 where a=1 and c=2 order by b;
--echo # both should use range access
explain select a,b,c from t1 where a=1 and c=2 order by b limit 1000;
explain select a,b,c from t1 where a=1 and c=2 order by b limit 2000;
drop table t1,t0;