现象:线上慢查询,2张表最大数据3000条,子查询单独拿出来执行很快,把子查询的结果替换掉sql改成 teacher_id IN (1,2,3),执行也很快。
修改成内连接之后从4秒变成0.01秒。
或者也可以子查询通过代码先查出来,在当作参数传入,执行时间大概0.001秒。不想改代码,改了下sql就这样勒。。
SELECT
*
FROM
student
WHERE
teacher_id IN (
SELECT
id
FROM
teacher
WHERE
NAME LIKE '张%'
)
修改后的sql
SELECT
*
FROM
student stu INNER JOIN (SELECT
id
FROM
teacher
WHERE
NAME LIKE '张%') te on stu.teacher_id=te.id