Я пытаюсь оптимизировать очень простой пример MYSQL, и я не могу понять, как предотвратить выполнение нижеуказанного запроса при сканировании таблицы при ссылке на столбец uid. Используя пояснение, tt показывает возможный ключ правильно, но фактически не использует ключ и не сканирует все строки.Проблема с пониманием того, как избавиться от сканирования таблицы в базовом примере объяснения MYSQL
CREATE TABLE `Foo` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`barId` int(10) unsigned NOT NULL,
`uid` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `barId` (`barId`),
KEY `uid` (`uid`)
)
explain
select count(uid) as userCount
FROM Foo
WHERE barId = 1
GROUP BY barId
id select_type table type possible_keys key rows Extra
1 SIMPLE Foo ALL barId NULL 4 Using where
Выборочные данные
id,barId,uid
1,1,1
2,1,2
3,1,3
4,2,4
'GROUP BY' не нужно с' barID = 1' – Uueerdo
уверенно ... однако все еще выполняется сканирование таблицы без него. – MonkeyBonkey