2017-08-18 4 views
0

J'utilise le pilote sqlserver-jdbc exécuter une requête en Java, attendre environ 700s avant de retourner le jeu de résultats, mais c'est seulement 50s quand je fais cela avec Navicat ou SSMS à la place. Quelqu'un a un problème similaire, je ne peux pas trouver de raison car je ne connais pas beaucoup la base de données.Pourquoi jdbc exécutant sqlserver proceduce prend 10 min mais navicat ou ssms seulement 50s?

+0

Nous aurons besoin de plus d'informations pour vous aider. Montrez-nous du code, quelle requête est lente? – Carra

Répondre

0

Utilisez ce script pour obtenir les plans d'exécution mises en cache de votre SP:

SELECT cp.objtype AS ObjectType, 
OBJECT_NAME(st.objectid,st.dbid) AS ObjectName, 
cp.usecounts AS ExecutionCount, 
st.TEXT AS QueryText, 
qp.query_plan AS QueryPlan 
FROM sys.dm_exec_cached_plans AS cp 
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp 
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st 
WHERE objtype ='Proc' AND OBJECT_NAME(st.objectid,st.dbid) = '__YOUR_SP_NAME__'; 

Je suppose que SSMS et pilote SQLServer-jdbc un autre régime de mises en cache.