我有许多类似的电话。下面是一个:
$STH = $DBH->prepare("
SELECT t.mobile, t.unum
FROM teacher t
LEFT JOIN s_group_member m ON m.unum = t.unum
LEFT JOIN s_group g ON g.gnum = m.gnum
WHERE m.gnum = :g AND g.unum = :u
AND t.unum NOT IN (SELECT unum FROM t_unav WHERE unav_date = :d)");
它从teacher
表中获取数据,其中 (1) 教师是指定组的成员,(2) 该组属于用户,以及 (3) 教师不可用。
我的问题是最快的:
- 每次都进行子选择调用。
- 将子选择缓存到一个数组中,然后像在这篇文章中一样使用 IN($array) 。
- 创建一个临时表。
类似的电话被打了好几次——也许是 20 到 30 次……
谢谢。