【发布时间】:2016-02-03 14:22:44
【问题描述】:
我有一个workers 表和一个关联的workerGeofence 表。
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 的条目的工人。
我能够通过以下方式获得预期的结果:
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
但是 in 子查询是详尽的,因为当我运行解释时,我可以看到它正在扫描整个表。我该如何解决这个问题?
【问题讨论】:
-
你不能只告诉我们问题的一半。
标签: mysql sql join query-optimization in-subquery