我正在努力提高api的性能。我需要知道标记的第二行是否也会命中数据库?因为我想尽量减少这一点。
StringBuffer queryBuf = new StringBuffer("some query in SQL");
--------->StringBuffer queryBuf2 = new StringBuffer(" SELECT DISTINCT PP.ID FROM ( " + queryBuf + ") PP ");
Query query1 = getSession().createSQLQuery(queryBuf2.toString());
query1.setReadOnly(true);
ScrollableResults results = query1.scroll();
if (results.isLast() == false)
results.last();
int total = results.getRowNumber() + 1;
results.close();
logger.debug(">>>>>>TOTAL COUNT<<<<<< = {}", total);
答案 0 :(得分:2)
没有。只有行ScrollableResults results = query1.scroll();
执行sql。
此外,您可能希望使用SQL COUNT
答案 1 :(得分:2)
它简单易用,你只是创建了StringBuffer对象。
答案 2 :(得分:2)
你只是创建一个字符串缓冲区。它没有击中数据库。如果我对这个代码可能会给出编译错误。
答案 3 :(得分:1)
我需要知道标记的第二行是否也会命中数据库?
您正在构建前三行中的StringBuffer
个对象,为什么它会击中数据库!如果不需要同步,您可以使用StringBuilder
!
答案 4 :(得分:1)
不,它不会打到数据库。它将从第一个查询创建的缓冲区中进行查询。