免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

減少與數(shù)據(jù)庫(kù)的連接,提高請(qǐng)求效率

工時(shí)系統(tǒng)代碼優(yōu)化記錄:

在網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營(yíng)銷成為有效果、有回報(bào)的無(wú)錫營(yíng)銷推廣。創(chuàng)新互聯(lián)建站專業(yè)成都網(wǎng)站建設(shè)十多年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

在查看工時(shí)詳情的時(shí)候,我們需要將個(gè)人的工時(shí)分項(xiàng)目,每月進(jìn)行一個(gè)展示。

一年有12個(gè)月,一個(gè)人有多個(gè)項(xiàng)目。

初始代碼只是為了實(shí)現(xiàn)功能,所以在代碼中進(jìn)行的循環(huán)操作,即每個(gè)項(xiàng)目每月到數(shù)據(jù)庫(kù)中獲取該用用戶的工時(shí)統(tǒng)計(jì)。

這樣就造成了多次請(qǐng)求數(shù)據(jù)庫(kù),強(qiáng)求效率很低。差不多查詢一次要2500ms的時(shí)間。這樣肯定的不行的。

優(yōu)化:優(yōu)化采用每個(gè)項(xiàng)目只與數(shù)據(jù)庫(kù)建立一次連接。采用存儲(chǔ)過(guò)程進(jìn)行調(diào)用。

這樣就將數(shù)據(jù)庫(kù)的連接次數(shù)大大減少了。

以下是沒(méi)有優(yōu)化前的代碼。

工時(shí)系統(tǒng):
查看工時(shí)詳情,(4個(gè)項(xiàng)目為例子)
原來(lái)的代碼請(qǐng)求數(shù)據(jù)庫(kù)2*12*4+1=97次。
優(yōu)化后的數(shù)據(jù),請(qǐng)求數(shù)據(jù)庫(kù)5次(首先查詢所有的項(xiàng)目,然后每個(gè)項(xiàng)目去查詢一次。)

		/*
		 * 查詢項(xiàng)目在每月已提交的工時(shí)
		 */
		// 查詢每個(gè)人的項(xiàng)目id
		List<WorkDetail> workDetailList = workDetailManager.getProjectIdByUser(userId);//第一次
		List<Project> projectList = new ArrayList<>();
		for (WorkDetail workDetail : workDetailList) {//循環(huán)4次
			Integer projectId = workDetail.getProjectId();
			Project project = projectManager.get(projectId);
			// 每月去查詢
			for (int i = 0; i < countMonth; i++) {//循環(huán)12次
				Double reportCount = new Double("0");
				String workDay = String.valueOf(year) + months[i];
				WorkDetailQuery query = new WorkDetailQuery();
				query.setState(10);
				query.setProjectId(projectId);
				query.setUserId(userId);
				// 如果當(dāng)月還沒(méi)有到月底,統(tǒng)計(jì)至當(dāng)天的前一天為準(zhǔn)。
				Integer beforNowDay = Integer.valueOf(dateStr) - 1;
				if (workDay.equals(dateStr.substring(0, 6))) {
					query.setStartDate(workDay + "01");
					query.setEndDate(beforNowDay.toString());
					query.setWorkType("FUL");
					Integer fulCount1 = workDetailManager.count(query);//查詢是半天還是全天  每月循環(huán)一次
					query.setWorkType("PAR");
					Integer parCount1 = workDetailManager.count(query);//查詢是半天還是全天  每月循環(huán)一次
					reportCount = (parCount1.doubleValue() / 2) + fulCount1.doubleValue();
				} else {
					query.setWorkDay(Integer.valueOf(workDay));
					query.setWorkType("FUL");
					Integer fulCount = workDetailManager.count(query);
					query.setWorkType("PAR");
					Integer parCount = workDetailManager.count(query);
					reportCount = (parCount.doubleValue() / 2) + fulCount.doubleValue();
				}
				if (reportCount == 0.0) {
					reportCount = null;
				}
				// 保存到每個(gè)月
				if ("01".equals(months[i])) {
					project.setJanCount(reportCount);
				} else if ("02".equals(months[i])) {
					project.setFebCount(reportCount);
				} else if ("03".equals(months[i])) {
					project.setMarCount(reportCount);
				} else if ("04".equals(months[i])) {
					project.setAprCount(reportCount);
				} else if ("05".equals(months[i])) {
					project.setMayCount(reportCount);
				} else if ("06".equals(months[i])) {
					project.setJunCount(reportCount);
				} else if ("07".equals(months[i])) {
					project.setJulCount(reportCount);
				} else if ("08".equals(months[i])) {
					project.setAugCount(reportCount);
				} else if ("09".equals(months[i])) {
					project.setSeptCount(reportCount);
				} else if ("10".equals(months[i])) {
					project.setOctCount(reportCount);
				} else if ("11".equals(months[i])) {
					project.setNovCount(reportCount);
				} else if ("12".equals(months[i])) {
					project.setDecCount(reportCount);
				}
			}
			projectList.add(project);
		}
		

優(yōu)化后速度很大提升,請(qǐng)求時(shí)間一般為180ms,滿足實(shí)際需求。

總結(jié):報(bào)表查詢中一定要減少請(qǐng)求數(shù)據(jù)庫(kù)的次數(shù)。盡量采用多表查詢或存儲(chǔ)過(guò)程調(diào)用的方式。

本文題目:減少與數(shù)據(jù)庫(kù)的連接,提高請(qǐng)求效率
文章分享:http://m.newbst.com/article22/ppiscc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)網(wǎng)頁(yè)設(shè)計(jì)公司、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化