MariaDB [test]> SELECT t1.f4 AS field1 FROM t2 JOIN t1 ON t2.f7 = t1.f4 WHERE t1.f10 IN ( 9 , 0 , 100 ) ORDER BY field1 LIMIT 1;
+--------+
| field1 |
+--------+
| e |
+--------+
1 row in set (0.00 sec)
MariaDB [test]> EXPLAIN SELECT t1.f4 AS field1 FROM t2 JOIN t1 ON t2.f7 = t1.f4 WHERE t1.f10 IN ( 9 , 0 , 100 ) ORDER BY field1 LIMIT 1;
+----+-------------+-------+-------+---------------+------+---------+------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+---------------+------+---------+------------+------+--------------------------+
| 1 | SIMPLE | t1 | range | f10,f4 | f4 | 13 | NULL | 10 | Using where |
| 1 | SIMPLE | t2 | ref | f7 | f7 | 67 | test.t1.f4 | 2 | Using where; Using index |
+----+-------------+-------+-------+---------------+------+---------+------------+------+--------------------------+
2 rows in set (0.00 sec)
The problem can be reproduced for MyISAM as well:
MariaDB [test]> CREATE TABLE t2 ( f7 varchar(64), KEY (f7));
Query OK, 0 rows affected (0.02 sec)
MariaDB [test]> INSERT IGNORE INTO t2 VALUES ('d'),( 'UALLN' ),('d') ,('z'), ('r'),( 'YVAKV' ),('d') ,('TNGZK' ),('e') ,('xucupaxdyyth sgiw'), ('why') ,('ttugkxucupax dyyt'), ('l'),( 'LHTKN' ),('d') ,('o'), ('v'),( 'KGLCJ' ),('your' );
Query OK, 19 rows affected (0.00 sec)
Records: 19 Duplicates: 0 Warnings: 0
MariaDB [test]> CREATE TABLE t1 ( f10 int(11), f4 varchar(10), KEY (f10), KEY (f4)) ;
Query OK, 0 rows affected (0.01 sec)
MariaDB [test]> INSERT IGNORE INTO t1 VALUES ('4','e' ),('891879424' ,'l'),( '-243400704' ,'ectlyqupbk' ),('1851981824' ,'of'), ('-1495203840' ,'you') ,('4',' no'),(' -1436942336' ,'c'),( '891420672' ,'DQQYO' ),('608698368' ,'qergldqmec' ),('1', 'x');
Query OK, 10 rows affected (0.01 sec)
Records: 10 Duplicates: 0 Warnings: 0
MariaDB [test]> switch= 'index_ merge_sort_ intersection= off';
MariaDB [test]> SET SESSION optimizer_
Query OK, 0 rows affected (0.00 sec)
MariaDB [test]> SELECT t1.f4 AS field1 FROM t2 JOIN t1 ON t2.f7 = t1.f4 WHERE t1.f10 IN ( 9 , 0 , 100 ) ORDER BY field1 LIMIT 1;
+--------+
| field1 |
+--------+
| e |
+--------+
1 row in set (0.00 sec)
MariaDB [test]> EXPLAIN SELECT t1.f4 AS field1 FROM t2 JOIN t1 ON t2.f7 = t1.f4 WHERE t1.f10 IN ( 9 , 0 , 100 ) ORDER BY field1 LIMIT 1; ------- -----+- ------+ ------- +------ ------- --+---- --+---- -----+- ------- ----+-- ----+-- ------- ------- ------- ---+ ------- -----+- ------+ ------- +------ ------- --+---- --+---- -----+- ------- ----+-- ----+-- ------- ------- ------- ---+ ------- -----+- ------+ ------- +------ ------- --+---- --+---- -----+- ------- ----+-- ----+-- ------- ------- ------- ---+
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | t1 | range | f10,f4 | f4 | 13 | NULL | 10 | Using where |
| 1 | SIMPLE | t2 | ref | f7 | f7 | 67 | test.t1.f4 | 2 | Using where; Using index |
+----+-
2 rows in set (0.00 sec)