[求助]SQL语句优化问题
项目中遇到一段SQL语句类似如下:SELECT*
FROM
`table1`
WHERE uid IN(
SELECT
uid
FROM
`table2`
WHERE
time >= '2013-04-26 17:00:00'
AND time <= '2013-04-27 17:00:00'
AND owner_uid = 1
) AND a.owner_uid IN (1)
LIMIT 0, 20;其中table1建了唯一索引UNIQUE KEY `owner_uid` (`owner_uid`,`uid`)table1和table2都是百万级别的表,但子查询的结果非常小,大概只有50条记录左右。
如果将子查询改为实际的记录,SQL如下:SELECT
*
FROM
`table1`
WHERE uid IN(
1, 2, 3, ... , 50
) AND a.owner_uid IN (1)
LIMIT 0, 20;则查询效率很高,大概0.07秒就能完成。如果用最开始的SQL语句则需要2.5秒左右才能完成,如果单独执行子查询也只需要0.9秒。请问是什么原因导致的,如何优化?
癫痫病的治疗方法 http://jiankang.zkxww.com/new/
癫痫病的治疗方法 http://health.lzbs.com.cn/zhiliao/
癫痫病的早期症状 http://health.lzbs.com.cn/zhengzhuang/
癫痫病的早期症状 http://haoyy.yuqinge.com/dxzz/
北京治疗癫痫医院 http://jiankang.zkxww.com/
北京治疗癫痫医院 http://health.lzbs.com.cn/dxyy/
北京治疗癫痫医院 http://haoyy.yuqinge.com/lzyy/
北京癫痫专科医院 http://jiankang.zkxww.com/
北京癫痫专科医院 http://haoyy.yuqinge.com/dxyy/
治疗癫痫最好的医院 http://health.lzbs.com.cn/
页:
[1]