mysql - 其他情况的 SQL 最佳实践
问题描述
我正在使用mysql。刚刚看到一个地方有一个 case 语句,在 SUM 中没有其他地方,在 IFNULL 中有另一个地方。
这安全吗?这更快吗?最佳做法是什么?
sum(case when somevalue>100 then somevalue end) as answer
或者
sum(case when somevalue>100 then somevalue else 0 end) as answer
解决方案
这些做不同的事情。
NULL
如果条件不匹配,则第一个返回where
。
第二个返回0
。但NULL
如果您没有GROUP BY
并且没有聚合行,它可以返回。
你应该使用你想要的(通常第二个是你想要的)。此外,与读取数据和处理查询所需的其他处理相比,任何性能差异都是微观的——甚至可能无法始终如一地衡量。这是一个“微优化”,很少值得去思考。
推荐阅读
- ffmpeg - RTSP流的轻量级编码方法?
- .net - 如何将 Dafny 代码与 C# 程序集链接
- r - r 逐行比较两列中的文本
- python-3.x - 导入 eventlet SSL 导致:ModuleNotFoundError: No module named 'OpenSSL.tsafe'
- json - 直到循环出现错误(powershell)
- java - 重新编译项目时如何在Java中保存系统状态并恢复系统?
- .net-core-3.1 - 在 .net core 3.1 中读取请求正文
- terraform - 创建 terraform hcl 变量作为地图
- python - 在python中删除列名中不需要的字符
- angular - 使用我自己的库时找不到模块或其对应的类型声明