部门同事来找我说现在用的几个存储过程(离职同事写的)查询太慢了, 要几个小时才能出结果, 于是我打开后看到了如此的内容...
我也不是说有什么优越感, 但是这槽点也太大了...
以下是部分片段, 该存储过程总计 900 行, 类似的计算部分大概有四百行多, 剩余部分全是字符串拼接
该同事还留下了另外几个存储过程等待修改, 看到五百行往上的满篇 left join, with 套 with
十几个表 left join, 还是 on a.col1 >= b.col2 and a.col2 < b.col2 这种连接
现在只想摸鱼
-- GMV
SET
@start_gmv = (
SELECT
SUM(`客户付款总金额(¥)`)
FROM
`历史订单明细`
WHERE
`测算日期范围` = start_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
SET
@end_gmv = (
SELECT
SUM(`客户付款总金额(¥)`)
FROM
`历史订单明细`
WHERE
`测算日期范围` = end_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
-- 订单量
SET
@start_order = (
SELECT
COUNT(*)
FROM
`历史订单明细`
WHERE
`测算日期范围` = start_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
SET
@end_order = (
SELECT
COUNT(*)
FROM
`历史订单明细`
WHERE
`测算日期范围` = end_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
-- 产品销量
SET
@start_sale = (
SELECT
SUM(`产品销量`)
FROM
`历史订单明细`
WHERE
`测算日期范围` = start_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
SET
@end_sale = (
SELECT
SUM(`产品销量`)
FROM
`历史订单明细`
WHERE
`测算日期范围` = end_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
-- 客单价
SET
@start_atv = (
SELECT
SUM(`客户付款总金额(¥)`) / COUNT(*)
FROM
`历史订单明细`
WHERE
`测算日期范围` = start_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
SET
@end_atv = (
SELECT
SUM(`客户付款总金额(¥)`) / COUNT(*)
FROM
`历史订单明细`
WHERE
`测算日期范围` = end_estimate_date
AND `部门` LIKE CONCAT('%', @department, '%')
AND `经营团队` LIKE CONCAT('%', @management_team, '%')
AND `组别` LIKE CONCAT('%', @groups, '%')
);
-- 产品成本占比
...
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.