Я думаю, что если в этом поле более одного символа, то in ('something')
быстрее, чем like '%something%'
, верно?
Но что, если есть только один символ?
CREATE TABLE `example` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`name` varchar(50) DEFAULT NULL COMMENT 'name',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='example';
INSERT INTO `example` (`id`, `name`)
VALUES
(1, 'A'),
(2, 'B'),
(3, 'C'),
(4, 'D'),
(5, NULL),
(6, 'E');
Итак, в чем разница между select * from example where name like '%A%';
и select * from example where name in ('A');
? На in
быстрее, чем like
?
Кроме того, как насчет select * from example where name like '%%';
и select * from example where name in ('A','B','C','D','E');