
SELECT( SELECT 根据表 A 或者表 B 进行函数计算 FROM 表 A JOIN 表 B ON 表 A.id = 表 B.id WHERE 表 C.id = 表 A.C_ID ) AS 字段名 FROM 表 C WHERE ***** 试过把表 C 放在里面 join,或者把子查询里面的函数取出来,全部放最外面 where;
但是数据都不对,有没有老哥知道怎么优化
1 hiahiahiahia OP 原始 SQL 大概有八九个这样查询的字段,崩溃了 |
2 hiahiahiahia OP 目前查询大概一分钟左右 |
3 fiypig 2021-04-14 11:31:53 +08:00 explain 先看下效果, 我看索引那些都有了把 |
4 hiahiahiahia OP @fiypig 索引都有,执行计划里大部分都是 all |
5 akira 2021-04-14 11:37:01 +08:00 数据不对那就是 sql 都没有写对了啊。join 这个东西 确实容易写错的 |
6 lyqqqq 2021-04-14 13:21:57 +08:00 |
7 stevenbipt 2021-04-14 13:53:51 +08:00 看看内部 select 自查询的时候有没有命中索引 |
8 wengyanbin 2021-04-14 14:10:28 +08:00 |
9 hiahiahiahia OP @lyqqqq 试过这种,查出来的数据是错的 |
10 hiahiahiahia OP @wengyanbin 没有 in 语句 |
11 wengyanbin 2021-04-14 16:39:11 +08:00 @hiahiahiahia 我的意思是让你将原语句改写成 in 语句或者 exists 语句的格式,看下执行效率跟结果 |
12 shoushi 2021-04-14 16:48:52 +08:00 函数计算 索引不是会失效么 |
13 x2009again 2021-04-14 17:23:11 +08:00 把 where 的条件也放入 join 的 on 上去试试 |
14 CodeUtils 2021-04-14 17:36:17 +08:00 表的数据量大小关系是怎么样的? |
15 jhdxr 2021-04-14 17:38:11 +08:00 这帖子问的是查询结果是错的怎么办。。。 超过一半回复都在评论查询效率 _(:з」∠)_ |
16 c6h6benzene 2021-04-14 17:53:43 +08:00 via iPhone 可能我技术不够,但子查询里面没有表 C,where 里面却有表 C 的字段,这真的不会报错吗…? |