MariaDB社区

标题: [求助]SQL语句优化问题 [打印本页]

作者: gilles    时间: 2013-4-28 11:24
标题: [求助]SQL语句优化问题
项目中遇到一段SQL语句类似如下:
  1. SELECT
  2.     *
  3. FROM
  4.     `table1`
  5. WHERE uid IN(
  6.     SELECT
  7.         uid
  8.     FROM
  9.        `table2`
  10.     WHERE
  11.             time >= '2013-04-26 17:00:00'
  12.             AND time <= '2013-04-27 17:00:00'
  13.             AND owner_uid = 1
  14. ) AND a.owner_uid IN (1)
  15. LIMIT 0, 20;
复制代码
其中table1建了唯一索引
  1. UNIQUE KEY `owner_uid` (`owner_uid`,`uid`)
复制代码
table1和table2都是百万级别的表,但子查询的结果非常小,大概只有50条记录左右。

如果将子查询改为实际的记录,SQL如下:
  1. SELECT
  2.     *
  3. FROM
  4.     `table1`
  5. WHERE uid IN(
  6.     1, 2, 3, ... , 50
  7. ) AND a.owner_uid IN (1)
  8. LIMIT 0, 20;
复制代码
则查询效率很高,大概0.07秒就能完成。如果用最开始的SQL语句则需要2.5秒左右才能完成,如果单独执行子查询也只需要0.9秒。请问是什么原因导致的,如何优化?



作者: 气质装饰情    时间: 2016-1-18 17:12
癫痫病的治疗方法 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/





欢迎光临 MariaDB社区 (http://123.56.88.72/) Powered by Discuz! X3.2