运算操作是在Java代码中执行还是在Mysql的where子句中执行
假如age建立了索引,现在要对所有要查询的age进行一个加一操作,那么这个操作是放在Java代码中好还是SQL语句中好
放在SQL语句时的Mybatis代码
SELECT id, age
FROM users
WHERE age IN
<if test="ages != null and ages.size() > 0">
<foreach item="age" collection="ages" open="(" separator="," close=")">
#{age}+1
</foreach>
</if>
本来是觉得直接放在SQL语句中就行,但想着如果在where子句中进行表达式操作会造成索引失效,就在考虑
我建议放在Java代码中执行运算。SQL语句中应该进行单纯的数据库操作,不要加入业务逻辑。在Java代码中能看到运算的过程,就没必要看到SQL层面。代码是可以自解释的,SQL语句起名,很难很精确描述执行怎样的操作。