У меня есть рабочий стол и связанная с ним рабочая таблица Geofence.optimize IN subquery
CREATE TABLE IF NOT EXISTS `workergeofences` (
`ID` int(11) NOT NULL,
`WorkerID` varchar(20) NOT NULL,
`GeofenceID` int(11) NOT NULL,
`isActive` tinyint(4) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=latin1;
Мне нужно возвращать только рабочие, которые имеют по крайней мере одну запись в таблице workerGeofences с IsActive из 1.
Я смог получить желаемый результат Withe следующее:
SELECT distinct w.ID, Title, FName, SName, Email, Birthday, Address, Phone, description,
companyID
FROM Workers w WHERE companyID = ?
and w.ID IN (SELECT WorkerID FROM WorkerGeofences WHERE isActive <> 0)
limit ?,10
, но в подзапросе исчерпывающий, как при выполнении объяснения, я вижу, что он просматривает всю таблицу. Как мне обойти это?
Вы не можете показать нам только половину проблемы. – Strawberry