· 7 years ago · Dec 23, 2018, 06:56 PM
1SELECT *
2FROM `test`
3WHERE user_id = 9898
4AND status IN (1,3,4)
5order by id
6limit 30;
7
8id select_type table type possible_keys key key_len ref rows Extra
91 SIMPLE test range user_id user_id 8 NULL 3 Using where; Using index; Using filesort
10
11CREATE TABLE IF NOT EXISTS `test` (
12 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
13 `user_id` int(10) unsigned NOT NULL,
14 `status` int(3) unsigned NOT NULL,
15 PRIMARY KEY (`id`),
16 KEY `user_id` (`user_id`,`status`)
17) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
18
19--
20-- Dumping data for table `test`
21--
22
23INSERT INTO `test` (`id`, `user_id`, `status`) VALUES
24(5, 9797, 2),
25(6, 9797, 3),
26(4, 9898, 0),
27(1, 9898, 2),
28(2, 9898, 3),
29(3, 9898, 4);
30
31(SELECT * FROM `test` WHERE user_id = 9898 AND status = 1 ORDER BY id LIMIT 30)
32UNION ALL (SELECT * FROM `test` WHERE user_id = 9898 AND status = 2 ORDER BY id LIMIT 30)
33UNION ALL (SELECT * FROM `test` WHERE user_id = 9898 AND status = 2 ORDER BY id LIMIT 30)
34ORDER BY id LIMIT 30