1.傳遞一組agent_id 提高SQL性能,不要一次傳遞一個agent_id

select agent_id agentId ,count(service_type) counts, sum(time_to_sec(end_time)-time_to_sec

(start_time)) seconds from et_service_log where service_type=? and site_id=? and agent_id in (?, ?,

?, ?, ?, ?, ?, ?, ?, ?)  group by agent_id

SQLQuery sqlQuery = this.getSession().createSQLQuery(conditionSql);
sqlQuery.setParameterList("agentId", agentIdList);

2.主從明細表關系查詢優化
 
普遍方法是 先查詢主表IDLIST,再通過每個ID,獲取一組明細表中的數據
優化方法是 主從表 LEFT JOIN 一次執行就可以把相關數據RESRARCH

CODE :
 Criteria criteria = createCriteria(MessageCategory.class)
        .add(Restrictions.eq("entityPk.siteId", siteId))
        .add(Restrictions.eq("deleted", false));
   criteria.createAlias("messageContentSet",

"messageContentSet",JoinFragment.LEFT_OUTER_JOIN).setFetchMode("messageContentSet",

FetchMode.JOIN).add(
     Restrictions.eq("messageContentSet.deleted", false)).addOrder

(Order.desc("entityPk.id"));
   List listData=criteria.list();  
   Set set =new HashSet(listData); (* 過濾重復數據)



------君臨天下,舍我其誰------