select * from tableA a,tableB b,( select * from tableC ) c 这个 SQL 查询的老慢了 c 表 100 条数据
竟然花了 50s,我几乎不怎么用这种查找方式,希望获取到点有用信息
谢谢啦
1 lihongjie0209 2019-12-17 15:58:41 +08:00 笛卡尔积?? 三个表?? |
![]() | 2 jeffh 2019-12-17 16:05:25 +08:00 关联条件都没有吗,那三个表做笛卡尔积,慢是一定的 |
![]() | 3 IMCA1024 2019-12-17 16:07:56 +08:00 ![]() 还有这等可怕 SQL |
4 GroupF OP 每次查询特慢,这点地方用的地方太多了,所以我不想动 |
![]() | 5 a7217107 2019-12-17 16:11:00 +08:00 这样查等价 select * from tableA a,tableB b,tableC c,笛卡尔积三张表,当然慢啊 |
6 GroupF OP 好伐好伐,我重写了 |
![]() | 7 arthas2234 2019-12-17 16:15:36 +08:00 ![]() 骚操作一套一套的,还用的地方特别多,不改就等 GG 吧 看需要使用的地方,汇总一下需要使用哪些字段,在不改变输出的情况下优化 SQL |
8 airfling 2019-12-17 16:20:40 +08:00 还不如分三次执行 |
9 smilenceX 2019-12-17 16:21:15 +08:00 我还特意去试了一下,原来 sql 这么写真的能执行 |
10 Raymon111111 2019-12-17 16:21:59 +08:00 不是特别需要 真的不要连表 索引也闹不明白 |
![]() | 11 yinjy 2019-12-17 16:25:24 +08:00 到底什么业务逻辑非得这么查表…… |
12 GroupF OP @arthas2234 我有时候都感觉写了个寂寞 |
![]() | 13 U7Q5tLAex2FI0o0g 2019-12-17 16:31:31 +08:00 不如分 3 次查? |
14 geminikingfall 2019-12-17 16:35:08 +08:00 不能分开么? |
16 weipt 2019-12-17 16:47:19 +08:00 你这样查到的结果有用吗?! 干了 10 几年开发还有这样的语句,长见识了 |
![]() | 17 lovelive1024 2019-12-17 17:00:30 +08:00 不慢才有鬼了,这样查询相当于 count(a) * count(b) * count(c) 的记录数,每个表 100 条那也是 100W 条了 |
18 8FollowHeart 2019-12-17 17:02:53 +08:00 最好改成 join 吧,加下关联条件,再加上索引就完美了 |
19 ackoly 2019-12-17 22:24:00 +08:00 via iPhone 估计是 Oracle 的,关联条件都写在 where 里 |
20 g26 2019-12-21 16:38:41 +08:00 查看 mysql 的版本,你的应该是 5.5 之前的,5.6 有优化 另外你的 sql 好像不全,建议改成 left join |