MariaDB 5.5.23 EXPLAIN output:
MariaDB [test]> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 DESC\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
MariaDB [test]> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 ASC\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
MySQL 5.6.6-m9 EXPLAIN output:
mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 DESC\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 ASC\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
I cannot reproduce this bug on MySQL 5.6.6-m9 and MariaDB 5.5.23 because the test data here (https:/ /bugs.launchpad .net/maria/ +bug/1000051/ +attachment/ 3148604/ +files/ A.data) and the test query does not seem to force MySQL/MariaDB to use ICP, even if I change the sort order to ASC.
MariaDB 5.5.23 EXPLAIN output: ******* ******* ****** 1. row ******* ******* ******* ****** ******* ******* ****** 2. row ******* ******* ******* ******
MariaDB [test]> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 DESC\G
*******
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*******
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
MariaDB [test]> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 ASC\G ******* ******* ****** 1. row ******* ******* ******* ****** ******* ******* ****** 2. row ******* ******* ******* ******
*******
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*******
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
MySQL 5.6.6-m9 EXPLAIN output: ******* ******* ****** 1. row ******* ******* ******* ****** ******* ******* ****** 2. row ******* ******* ******* ******
mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 DESC\G
*******
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*******
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)
mysql> EXPLAIN SELECT SQL_NO_CACHE * FROM A, B WHERE b1 = a1 AND a3 = "3" ORDER BY a2 ASC\G ******* ******* ****** 1. row ******* ******* ******* ****** ******* ******* ****** 2. row ******* ******* ******* ******
*******
id: 1
select_type: SIMPLE
table: A
type: ref
possible_keys: a3,a3_2
key: a3_2
key_len: 2
ref: const
rows: 731
Extra: Using where
*******
id: 1
select_type: SIMPLE
table: B
type: eq_ref
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: test.A.a1
rows: 1
Extra: Using index
2 rows in set (0.00 sec)