在做项目的时候能用表连接的时候就没用到子查询。最近优化到一条sql语句也是用的表连接,可是性能相当的慢需要20多秒,改成子查询以后只需要300毫秒
有两张表,一张主表,一张子表
table1 id, column1,colum2
table2 id,column3,column4, table1_id 字段类型没关系噢
因为是在列表分页查询table1,但是查询条件需要用到table2中的字段。其中,子表column3对应table1中的值是一样的。
当时写的是
SELECT DISTINCT
table1.id,column1,column2,table2.column3
FROM table1 inner join table2 ON table1.id=table2.table1_id
WHERE......
这样查询的效率非常低
改成字查询效率就会好很多
SELECT
table1.id,column1,column2
FROM table1
WHERE table1.id in (SELECT distinct table1_id FROM table2)