rendered paste bodymysql> create table betweentest (id integer unsigned not null auto_increment, start integer not null, end integer not null, primary key(id));
mysql> insert into betweentest (start, end) values (1,10), (10, 20), (20, 30), (40, 50), (50, 60);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM betweentest WHERE 25 BETWEEN start AND end;
+----+-------+-----+
| id | start | end |
+----+-------+-----+
| 3 | 20 | 30 |
+----+-------+-----+
1 row in set (0.00 sec)
mysql> EXPLAIN SELECT * FROM betweentest WHERE 25 BETWEEN start AND end;
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
| 1 | SIMPLE | betweentest | ALL | NULL | NULL | NULL | NULL | 5 | Using where |
+----+-------------+-------------+------+---------------+------+---------+------+------+-------------+
1 row in set (0.00 sec)
mysql> alter table betweentest ADD INDEX(start, end);
Query OK, 5 rows affected (0.02 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> EXPLAIN SELECT * FROM betweentest WHERE 25 BETWEEN start AND end;
+----+-------------+-------------+-------+---------------+-------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------------+-------+---------------+-------+---------+------+------+-------------+
| 1 | SIMPLE | betweentest | range | start | start | 4 | NULL | 3 | Using where |
+----+-------------+-------------+-------+---------------+-------+---------+------+------+-------------+
1 row in set (0.00 sec)