Eu tenho esta tabela:
CREATE TABLE IF NOT EXISTS `usergroups` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) unsigned NOT NULL,
`group_id` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`group_id`,`user_id`),
KEY `id` (`id`),
KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5496 ;
ao executar esta consulta:
EXPLAIN SELECT `UserGroup`.`user_id` FROM `usergroups` AS `UserGroup` WHERE `UserGroup`.`group_id` = 1 limit 30
sua saída é:
1 SIMPLE UserGroup ref PRIMARY PRIMARY 2 const 543 Using index
Acho que algo está errado! porque afetou 543 linhas, mas acho que deveria afetar 30 linhas no máximo. É verdade?
O limite tem um impacto em quantas linhas são selecionadas/afetadas. 543 é apenas o número de linhas que correspondem às junções e à cláusula where.