mysql> EXPLAIN SELECT * FROM adminlog WHERE adminlogid IN (SELECT adminlogid FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid+1 FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid+2 FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid+3 FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid-1 FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid-2 FROM adminlog WHERE extrainfo LIKE '%4087%' UNION SELECT adminlogid-3 FROM adminlog WHERE extrainfo LIKE '%4087%'); +----+--------------------+----------------------+--------+---------------+---------+---------+------+--------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+--------------------+----------------------+--------+---------------+---------+---------+------+--------+-------------+ | 1 | PRIMARY | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 2 | DEPENDENT SUBQUERY | adminlog | eq_ref | PRIMARY | PRIMARY | 4 | func | 1 | Using where | | 3 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 4 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 5 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 6 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 7 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | 8 | DEPENDENT UNION | adminlog | ALL | NULL | NULL | NULL | NULL | 149201 | Using where | | | UNION RESULT | | ALL | NULL | NULL | NULL | NULL | NULL | | +----+--------------------+----------------------+--------+---------------+---------+---------+------+--------+-------------+ 9 rows in set (0.02 sec)