explain SELECT * FROM pop_order_info poi WHERE poi.is_delete = 0 and poi.vendor_id =7879 group by poi.order_sn limit 10;
+----+-------------+-------+-------+----------------------------------------------------+------------------------------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+-------+----------------------------------------------------+------------------------------+---------+------+--------+-------------+
| 1 | SIMPLE | poi | range | vendor_id_2,is_delete_vendor_id_order_sn,vendor_id | is_delete_vendor_id_order_sn | 5 | NULL | 158462 | Using where |
+----+-------------+-------+-------+----------------------------------------------------+------------------------------+---------+------+--------+-------------+
1 row in set (0.00 sec)
The above query is very slow!
I created an index: is_delete_vendor_id_order_sn(is_delete,vendor_id,order_sn)
.
What does the 'type=range' mean in the above explain output?
Very fast by add hint:
explain SELECT * FROM pop_order_info poi use index(is_delete_vendor_id_order_sn) WHERE poi.is_delete = 0 and poi.vendor_id =7879 group by poi.order_sn limit 10;
+----+-------------+-------+------+------------------------------+------------------------------+---------+-------------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+------------------------------+------------------------------+---------+-------------+--------+-------------+
| 1 | SIMPLE | poi | ref | is_delete_vendor_id_order_sn | is_delete_vendor_id_order_sn | 5 | const,const | 158462 | Using where |
+----+-------------+-------+------+------------------------------+------------------------------+---------+-------------+--------+-------------+
1 row in set (0.00 sec)