sql语句中尽量不要使用复杂的函数运算
有时候我们对数据进行处理,可能有不同的处理结果存入数据库,比如result字段中存入:通过时存入success:1;不通过时存入success:0;无法处理时存入success:-1。如果要我们统计当天通过,不通过和无法处理的各有多少条,我们很容易想到case when命令,sql语句如下:
SELECT
SUM(CASE WHEN result LIKE '%"success":1%' THEN 1 ELSE 0 END) passNum,
SUM(CASE WHEN result LIKE '%"success":0%' THEN 1 ELSE 0 END) notPassNum,
SUM(CASE WHEN result LIKE '%"success":-1%' THEN 1 ELSE 0 END) cantCheckNum
FROM tableName WHERE c_date = 'today'
这个sql语句一下就把结果全部处理了,非常的方便,我们只需要使用一个对象接受一下在页面展示。
但是我想说我们尽量不要使用case when,DATEDIFF等复杂的函数。因为数据库特别是mysql,虽然提供了这些方法,但是如果访问量特别的大,数据内容特别的多,很容易造成速度变慢,甚至数据库的崩溃。如果只是公司内部用,访问量不大,还是没关系的。越大型的项目越不要用这些复杂的sql语句,尽量将所有数据都查出来,在代码中进行处理。
数据分析咨询请扫描二维码