对于使用一种或另一种更好、更快、更正确的变体,您可以给出哪些论据。
第一个变体:
StringBuffer sql = new StringBuffer("SELECT DISTINCT f.ID ")
.append("FROM FIRST_TABLE F ")
.append("LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID ")
.append("WHERE ")
.append("F.BOOL = 1 ")
.append("AND S.DATE IS NOT NULL ")
.append("AND S.CLOSED = 0 ");
第二种变体:
String sql = "SELECT DISTINCT f.ID " +
"FROM FIRST_TABLE F " +
"LEFT JOIN SECOND_TABLE s ON f.ID = s.F_ID " +
"WHERE "
"F.BOOL = 1 " +
"AND S.DATE IS NOT NULL " +
"AND S.CLOSED = 0";
最佳答案
第二种更好:
- 更清晰(更多的代码与您想要的有关)
- 效率更高,因为所有的连接都是在编译时完成的
即使需要执行时连接(例如,您在那里有一个变量),编译后的代码也会使用StringBuilder
或StringBuffer
需要的地方(取决于您的目标 Java 版本)。
请注意,如果您正在执行数据库查询,效率将微不足道。
关于java - 连接常量字符串 VS StringBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13530294/