1. 程式人生 > >Mybatis+sqlServer查詢速度慢的問題

Mybatis+sqlServer查詢速度慢的問題

問題一:

當表中資料量過大時,使用mybatis查詢速度回很慢,但在命令列中查詢特別快。這個問題始終找不到原因,後來才發現的問題所在。

舉例說:掃描入庫表wmsInScanDtl,查詢條件為(company,boxNo,acti)那我們建立索引時會使用如下語句

create index  wmsInScanDtl_idx onwmsInScanDtl (company,boxNo,acti);

但根據測試,得到的結論為mybatis會把選擇性最大列放在前面,也就是說表中如果某一個欄位的值在整個表中都是不一樣的,建立索引時需要放在第一位,

以此判斷上面表中的索引建立方式為create index  wmsInScanDtl_idx on wmsInScanDtl(boxNo,acti,company);

測試結果為:

使用我們原來的索引查詢資料的時間為500多毫秒,使用修改後的索引查詢資料的時間只需要幾毫秒

 所以以後在建立索引的時候公司別不要放在第一位,而是要把選擇性最高的放在最前面。

問題二:

在使用select時儘量不要用select * .前端需要顯示什麼欄位就查詢指定的欄位就可以了。該方式在資料量少的情況下根本看不出來問題。但當使用分頁查詢時效果很明顯

例如:

select *  from (
SELECT row_number() over(order by createDate desc) rn,b.*,s.sbmbi02 teamName FROM whsProduceDairyBas b 
LEFT JOIN sbmbi s ON b.teamLeader=s.sbmbi01 and b.company=s.company and s.acti='Y' 
WHERE b.company = 'AVC2' and deptNo in( 
select deptId from deptInfo WHERE company='AVC2' and deptSysNo in(
SELECT deptSysNO FROM deptRight WHERE company='AVC2' AND ownerType='1' AND ownerID='A09307') 
) and state!='X' ) tb where rn >(1-1)*20 and rn <=1*20

耗時710ms

但將*號改成需要的欄位,耗時300ms

相關推薦

Mybatis+sqlServer查詢速度的問題

問題一: 當表中資料量過大時,使用mybatis查詢速度回很慢,但在命令列中查詢特別快。這個問題始終找不到原因,後來才發現的問題所在。 舉例說:掃描入庫表wmsInScanDtl,查詢條件為(company,boxNo,acti)那我們建立索引時會使用如下語句 creat

數據庫查詢速度了?是否是因為死鎖了?一種解決死鎖的方法。

-- 檢索 blog kill _id exe 進行 xxx 通過 --查詢哪些表被死鎖 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sy

springmvc+spring+mybatis+sqlserver----查詢sqlserver----有返回參數

cal sql mod spring varchar type arc tty server <resultMap type="java.util.HashMap" id="resultMap"> <result column="U

查詢速度的原因很多,常見如下幾種 :

競爭 用戶 post 查詢 有用 who 活動 問題 返回 1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程序設計的缺陷) 2、I/O吞吐量小,形成了瓶頸效應。 3、沒有創建計算列導致查詢不優化。 4、內存不足 5、網絡速度慢 6、查詢出的數據量過

解決模糊查詢速度問題(ORACLE)

     一個困擾我良久的問題,在今天早上8:41分時基本解決。      資料庫的資料量非常龐大,查詢速度極慢,建立索引後“=”搜尋速度問題解決,但是在搜尋的sql語句中大部分是用like,可是like '%XXX%'是不使用索引的,而like 'XXX%'則經過索引,求教曾經的老師、高階程式設計師也無用,

Oracle模糊查詢之(4.採用全文索引解決模糊查詢,給出具體步驟)採用全文索引解決模糊查詢速度的問題[主文]

採用全文索引解決模糊查詢速度慢的問題 上一篇 /下一篇  2009-09-22 20:58:34 眾所周知,使用 like 進行模糊查詢速度極差,包括 like 'AAA%' ,like '%AAA',like '%AAA%',like '%A%A%'以及採用“_”

SQL Server資料庫查詢速度的原因和解決方法

SQL Server資料庫查詢速度慢的原因有很多,常見的有以下幾種:   1、沒有索引或者沒有用到索引(這是查詢慢最常見的問題,是程式設計的缺陷)   2、I/O吞吐量小,形成了瓶頸效應。   3、沒有建立計算列導致查詢不優化。   4、記憶體不足   5、網路速度慢   

oracle sql 語句巢狀子查詢 查詢速度

select        ----慢------------------         (select count(*)           from (select pe.personid, pe.pgd_sheetid           --------sele

記錄一次mysql查詢速度造成CPU使用率很高情況

字段 image 慢查詢日誌 截圖 cpu使用率 速度 很慢 code explain 1、某日zabbix告警,某臺機器CPU使用率過高。 查看慢查詢日誌,看到很多sql語句都超過10秒 把sql語句拿出來放在查詢窗口執行。前面加上explain就可以查看詳細查詢信息

分分鐘解決MySQL查詢速度與性能差

5.6 session 特定 操作系統 UNC 排序 方法 系統 inux 閱讀本文大概需要 6 分鐘。 一、什麽影響了數據庫查詢速度 1.1 影響數據庫查詢速度的四個因素 1.2 風險分析 QPS: QueriesPerSecond意思是“每秒查詢率”,是

mybatis分頁查詢SqlServer 2008 查詢速度

com ima alt 分頁查詢 img bubuko .com nbsp ati 一個業務場景,需要進行union查詢: 查詢速度非常慢,大概要37秒: 直接復制sql在數據庫客戶端執行,速度很快,由此可知是mybatis的原因,在網上搜索,可以配置fetc

mybatis與spring整合後,#方式查詢速度特別解決

首先看下#{},${}區別 這裡引用別人總結的 在這次專案開發中,sql語句非常長,傳入引數雖然才有一個日期,但是在語句中#{date}的佔位多達20多個,這樣就造成解析過慢,引數生成再到語句就差不多要2分鐘,查詢出來耗時3分鐘,後來實在沒辦法,在捨棄了防止sql注入的安全下。使

ArrayList具有數組的查詢速度快的優點以及增刪速度的缺點

() system 雙向循環鏈表 功能 接口 extends 分組 string 類的方法 LinkedList接口(在代碼的使用過程中和ArrayList沒有什麽區別) ArrayList底層是object數組,所以ArrayList具有數組的查詢速度快的優點以及增刪速度

mybatis sql查詢條件有時間時查詢效率非常

最近在進行開發時發現一個奇葩的問題,sql在資料庫查詢速度不過1秒都不到在在後臺卻發現非常慢,通過列印dao方法時間和看mybatis log發現速度確實是很慢不是其他問題,然後一步步測試,首先加上<![CDATA[]]> 加在整個sql都沒用,然後加上<if></&g

添加了一個欄位,查詢速度突然變

幾年前寫的一個小總結,本來寫在公司的wiki上,現在讀起來感覺寫的挺好玩的,粘到這裡。   做一個需求,要給平臺數據表加個欄位。加欄位之後,觸發程式,通過DbVisualizer查詢,資料正確入庫,然後通過頁面訪問該表,提示連線超時!!!WTF!剛才通過頁面訪問的時候還好好的啊!!  

SqlServer中的date日期在mybatis查詢出來差兩天

在使用mybatis查詢所有的資料的時候,我發現個問題,實體類中的欄位是String ,資料中的欄位是date,然後再mybatis中查詢出來的日期之後,總是比資料庫中的天數少兩天, 找了很多地方 終於找到了 解決方案如下 解決方案一 將資料型別從date轉換成datetime,

記一次Spark叢集查詢速度的問題調查

現象:針對某張表(下文中用A表代替)的查詢速度慢了6s 簡單介紹一下系統的架構:Spark + Tachyon + glusterfs+mesos,其中glusterfs負責tachyon資料的

Mongodb 佔用99%CPU並且查詢速度原因查詢筆記。

最近一直在用Mongodb,因為只是小專案,所以瞭解的不是很深入,並且只期望夠用就沒有進行深入研究。 但是,最近把Mongodb遷移了機器之後,發現特別慢,而且Mongodb 一直佔據99%的CPU, 於是就開始了下面的糾結旅程。 我檢視Mongodb的log,發現在

sqlserver重建(rebuild)索引可以提高查詢速度

當隨著表的資料量不斷增長,很多儲存的資料進行了不適當的跨頁(sqlserver中儲存的最小單位是頁,頁是不不可再分的),會產生很多索引的碎片。這時候需要重建索引來提高查詢效能。 如何檢視索引的使用情況: SELECT index_type_desc,alloc_unit_t

索引建立了,但是查詢速度還是奇怪的

建立索引後,偶爾需要執行表分析,才會有效果。analyze table OUT_STORAGE_PLAN_DETAIL compute statistics for table for all indexes for all columns;