У меня есть таблица, определенная следующим образом:
| book | CREATE TABLE `book` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`provider_id` int(10) unsigned DEFAULT '0',
`source_id` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
`title` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`description` longtext COLLATE utf8_unicode_ci,
PRIMARY KEY (`id`),
UNIQUE KEY `provider` (`provider_id`,`source_id`),
KEY `idx_source_id` (`source_id`),
) ENGINE=InnoDB AUTO_INCREMENT=1605425 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
, когда есть приблизительно 10 одновременных чтений со следующим sql:
SELECT * FROM `book` WHERE (provider_id = '1' AND source_id = '1037122800') ORDER BY `book`.`id` ASC LIMIT 1
это становится медленным, это занимает около 100 мс.
однако, если я изменил его на
SELECT * FROM `book` WHERE (provider_id = '1' AND source_id = '221630001') LIMIT 1
, то это нормально, это занимает несколько мс.
Я не понимаю, почему добавление порядка по идентификатору делает запрос намногопомедленнее?может ли кто-нибудь экспортировать?