gilles 发表于 2013-4-28 11:24:58

[求助]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秒。请问是什么原因导致的,如何优化?


气质装饰情 发表于 2016-1-18 17:12:00

癫痫病的治疗方法 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]
查看完整版本: [求助]SQL语句优化问题