大神们,问一个 sql 查询特别慢的问题,前人代码

2019-12-17 15:57:34 +08:00
 GroupF

select * from tableA a,tableB b,( select * from tableC ) c 这个 SQL 查询的老慢了 c 表 100 条数据

竟然花了 50s,我几乎不怎么用这种查找方式,希望获取到点有用信息

谢谢啦

5128 次点击
所在节点    MySQL
20 条回复
lihongjie0209
2019-12-17 15:58:41 +08:00
笛卡尔积?? 三个表??
jeffh
2019-12-17 16:05:25 +08:00
关联条件都没有吗,那三个表做笛卡尔积,慢是一定的
IMCA1024
2019-12-17 16:07:56 +08:00
还有这等可怕 SQL
GroupF
2019-12-17 16:10:27 +08:00
每次查询特慢,这点地方用的地方太多了,所以我不想动
a7217107
2019-12-17 16:11:00 +08:00
这样查等价 select * from tableA a,tableB b,tableC c,笛卡尔积三张表,当然慢啊
GroupF
2019-12-17 16:14:46 +08:00
好伐好伐,我重写了
arthas2234
2019-12-17 16:15:36 +08:00
骚操作一套一套的,还用的地方特别多,不改就等 GG 吧
看需要使用的地方,汇总一下需要使用哪些字段,在不改变输出的情况下优化 SQL
airfling
2019-12-17 16:20:40 +08:00
还不如分三次执行
smilenceX
2019-12-17 16:21:15 +08:00
我还特意去试了一下,原来 sql 这么写真的能执行
Raymon111111
2019-12-17 16:21:59 +08:00
不是特别需要

真的不要连表

索引也闹不明白
yinjy
2019-12-17 16:25:24 +08:00
到底什么业务逻辑非得这么查表……
GroupF
2019-12-17 16:26:02 +08:00
@arthas2234 我有时候都感觉写了个寂寞
littleylv
2019-12-17 16:31:31 +08:00
不如分 3 次查?
tyrantZhao
2019-12-17 16:35:08 +08:00
不能分开么?
GroupF
2019-12-17 16:39:43 +08:00
@littleylv 对,我也和爱用 java 来操作
weipt
2019-12-17 16:47:19 +08:00
你这样查到的结果有用吗?!
干了 10 几年开发还有这样的语句,长见识了
ily433664
2019-12-17 17:00:30 +08:00
不慢才有鬼了,这样查询相当于 count(a) * count(b) * count(c) 的记录数,每个表 100 条那也是 100W 条了
8FollowHeart
2019-12-17 17:02:53 +08:00
最好改成 join 吧,加下关联条件,再加上索引就完美了
ackoly
2019-12-17 22:24:00 +08:00
估计是 Oracle 的,关联条件都写在 where 里
g26
2019-12-21 16:38:41 +08:00
查看 mysql 的版本,你的应该是 5.5 之前的,5.6 有优化


另外你的 sql 好像不全,建议改成 left join

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/629849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX