今天改了 bug,看到了一个 sql,顿时惊了。。。。。 这个是新项目,还没上线这部分内容。。

2020-07-03 14:08:59 +08:00
 luxinfl
SELECT
a.*
FROM
(
SELECT
a.*
FROM
(
SELECT
a.*
FROM
(
SELECT
a.*
FROM
(
SELECT
a.*
FROM
(
SELECT
PLATFORM_REQUEST_CODE AS platformRequestCode,
AGGTEGATE_REQUEST_CODE AS aggtegateRequestCode,
CREATE_TIME AS createTime,
STATUS AS payStatus,
MERCHANT_GENERATE_CODE AS platformCode,
USER_CODE AS buyCode,
CHANNEL_NO AS channelNo
FROM
tb_aggtegate_payment_request
WHERE
STATUS != '00'
AND DEL_FLAG = 0
AND IS_VALID = 0
ORDER BY
CREATE_TIME DESC
) a
LEFT JOIN ( SELECT CHANNEL_REQUEST_CODE AS channelOrderCode, AGGTEGATE_REQUEST_CODE AS channelaggtegateRequestCode FROM tb_channel_send_report WHERE DEL_FLAG = 0 ) b ON a.aggtegateRequestCode = b.channelaggtegateRequestCode
) a
LEFT JOIN ( SELECT MERCHANT_INFO_CODE, MERCHANT_INFO_NAME AS platformName FROM tb_merchant_info WHERE DEL_FLAG = 0 ) c ON c.MERCHANT_INFO_CODE = a.platformCode
) a
LEFT JOIN ( SELECT PLATFORM_USER_CODE, MERCHANT_NAME AS merchantName FROM tb_user_info WHERE DEL_FLAG = 0 ) b ON a.buyCode = b.PLATFORM_USER_CODE
) a
LEFT JOIN ( SELECT CHANNEL_CODE, CHANNEL_NAME AS channelName FROM tb_channel_info WHERE DEL_FLAG = 0 ) b ON a.channelNo = b.CHANNEL_CODE
) a
LEFT JOIN ( SELECT AGGTEGATE_REQUEST_CODE, TIME_END AS payTime FROM tb_wxpay_order_business WHERE DEL_FLAG = 0 AND IS_VALID = 0 ) b ON a.aggtegateRequestCode = b.AGGTEGATE_REQUEST_CODE
WHERE
1 = 1
11279 次点击
所在节点    程序员
85 条回复
sonice
2020-07-03 14:11:57 +08:00
这儿就震惊了?普普通通
BrettD
2020-07-03 14:12:35 +08:00
这一坨怕不是复制粘贴搭出来的😂
sunziren
2020-07-03 14:25:09 +08:00
............,√
............,×
jswxg
2020-07-03 14:25:51 +08:00
格式化后看就清楚很多了。

SELECT a.*
FROM (
SELECT a.*
FROM (
SELECT a.*
FROM (
SELECT a.*
FROM (
SELECT a.*
FROM (
SELECT PLATFORM_REQUEST_CODE AS platformRequestCode, AGGTEGATE_REQUEST_CODE AS aggtegateRequestCode, CREATE_TIME AS createTime, STATUS AS payStatus, MERCHANT_GENERATE_CODE AS platformCode
, USER_CODE AS buyCode, CHANNEL_NO AS channelNo
FROM tb_aggtegate_payment_request
WHERE STATUS != '00'
AND DEL_FLAG = 0
AND IS_VALID = 0
ORDER BY CREATE_TIME DESC
) a
LEFT JOIN (
SELECT CHANNEL_REQUEST_CODE AS channelOrderCode, AGGTEGATE_REQUEST_CODE AS channelaggtegateRequestCode
FROM tb_channel_send_report
WHERE DEL_FLAG = 0
) b
ON a.aggtegateRequestCode = b.channelaggtegateRequestCode
) a
LEFT JOIN (
SELECT MERCHANT_INFO_CODE, MERCHANT_INFO_NAME AS platformName
FROM tb_merchant_info
WHERE DEL_FLAG = 0
) c
ON c.MERCHANT_INFO_CODE = a.platformCode
) a
LEFT JOIN (
SELECT PLATFORM_USER_CODE, MERCHANT_NAME AS merchantName
FROM tb_user_info
WHERE DEL_FLAG = 0
) b
ON a.buyCode = b.PLATFORM_USER_CODE
) a
LEFT JOIN (
SELECT CHANNEL_CODE, CHANNEL_NAME AS channelName
FROM tb_channel_info
WHERE DEL_FLAG = 0
) b
ON a.channelNo = b.CHANNEL_CODE
) a
LEFT JOIN (
SELECT AGGTEGATE_REQUEST_CODE, TIME_END AS payTime
FROM tb_wxpay_order_business
WHERE DEL_FLAG = 0
AND IS_VALID = 0
) b
ON a.aggtegateRequestCode = b.AGGTEGATE_REQUEST_CODE
WHERE 1 = 1
aaronlam
2020-07-03 14:27:15 +08:00
这就震惊了,想当年我刚接触到我们公司计费系统的 SQL 代码时,整个人都不好了。
airplayxcom
2020-07-03 14:27:42 +08:00
1=1 就很灵性了
loading
2020-07-03 14:28:40 +08:00
@airplayxcom 1=1 是标准的拼接 sql 常用技巧
luxinfl
2020-07-03 14:31:43 +08:00
@BrettD 不会在上面搞格式,好复杂
takemeaway
2020-07-03 14:31:55 +08:00
挺好的项目,就是写这个项目的人脑子太直了
luxinfl
2020-07-03 14:35:51 +08:00
@sonice 订单查询的话,量大了不会要很长时间么。性能太差了吧
luxinfl
2020-07-03 14:36:48 +08:00
@takemeaway 话说不是不应该用这么多连接么,阿里巴巴开发手册上面还禁止使用连接
luxinfl
2020-07-03 14:37:26 +08:00
@jswxg 感觉没差。。sql 这样写真的好么
est
2020-07-03 14:38:40 +08:00
新人和老人的区别就是面对一坨屎山,新人会大吃一斤。老人会贤淑的避开最臭的那部分屎,然后灵巧的在保证屎山不垮的情况下把自己的屎再拉一层上去
cbasil
2020-07-03 14:39:05 +08:00
太复杂,join 多的查询建视图啊,
sonice
2020-07-03 14:43:16 +08:00
@luxinfl 性能好不好跟索引、数据量、服务器性能等等有关。单看语句的话没啥毛病。
laminux29
2020-07-03 14:45:22 +08:00
DBA 不懂编程思维,不懂调试测试,写出 shi 一样的 SQL,很正常。

你受不了可以自己改。
luxinfl
2020-07-03 14:50:36 +08:00
@laminux29 这是开发写的,我们小公司,没有 dba
rtp
2020-07-03 14:51:17 +08:00
这才哪到哪,我记得原来的公司,写统计方面的 sql,基本上都是一条语句几屏幕啊……
soulzz
2020-07-03 14:52:09 +08:00
牛皮 用 sql 语句写业务
估计真的是老开发才会干的蠢事
z960112559
2020-07-03 14:52:43 +08:00
@est 666

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

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

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

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

© 2021 V2EX