यहाँ मेरी निष्कर्षों में से कुछ
कि तालिका
CREATE VIEW vw_Test_View
AS
SELECT ID, SUM(Value) AS Total
FROM Test_Table
GROUP BY ID
GO
Clear_Chached योजनाओं पर टेस्ट तालिका
CREATE TABLE Test_Table (ID INT , Value INT)
GO
INSERT INTO Test_Table
VALUES
(1, 100),
(2, 100),(2, 100),
(3, 100),(3, 100),(3, 100)
GO
देखें हैं
-- Clear chache for any chached plans
-- (Warning do not execute this on Production server)
DBCC FREEPROCCACHE;
GO
देखें कॉलिंग
-- Execute the same select from view twice
SELECT * FROM dbo.vw_Test_View
GO
SELECT * FROM dbo.vw_Test_View
GO
Chached योजनाओं निरीक्षण
-- Inspect Chached execution plans
SELECT UseCounts, Cacheobjtype, Objtype, [TEXT]
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE [TEXT] LIKE '%vw_Test%'
GO
╔═══════════╦═══════════════╦═════════╦════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗
║ UseCounts ║ Cacheobjtype ║ Objtype ║ TEXT ║
╠═══════════╬═══════════════╬═════════╬════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣
║ 1 ║ Compiled Plan ║ Adhoc ║ SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan FROM sys.dm_exec_cached_plans CROSS APPLY sys.dm_exec_sql_text(plan_handle) CROSS APPLY sys.dm_exec_query_plan(plan_handle) WHERE [TEXT] LIKE '%vw_Test%' ║
║ 2 ║ Compiled Plan ║ Adhoc ║ SELECT * FROM dbo.vw_Test_View ║
╚═══════════╩═══════════════╩═════════╩════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝
निष्कर्ष
आप के लिए हमारे SELECT * FROM View
था कार्य योजना लागू करके देख सकते हैं एक बार संकलित और एक ही क्वेरी के दूसरे निष्पादन पर पुन: उपयोग किया।
यह एक विचार है, योजना को छेड़छाड़ की गई थी और इसे बाद में निष्पादन पर पुन: उपयोग किया गया था। उम्मीद है कि यह स्पष्टीकरण मदद करता है। धन्यवाद।
ऐसा हो सकता है कि दृश्य की योजना को स्टोर करना बहुत उपयोगी नहीं है क्योंकि आपको अभ्यास में दृश्य पर हमेशा एक ऑपरेशन करने की आवश्यकता होती है। उस ऑपरेशन की योजना कैश की गई है। इसमें दृश्य क्वेरी का संभावित परिवर्तन शामिल है। – user2672165
आपको यह गलत जानकारी कहाँ से मिली? एक दृश्य पर एक 'चयन' वास्तव में एक चुनिंदा क्वेरी के अंत में है, और किसी भी अन्य क्वेरी की तरह, यह निष्पादन योजना ** कैश किया जाएगा ** - यह विज्ञापन-प्रसार क्वेरी या संग्रहित प्रक्रिया के अंदर से कोई क्वेरी से अलग नहीं है ..... एक क्वेरी एक क्वेरी है जो SQL सर्वर में एक क्वेरी है, और सभी निष्पादन योजनाओं को कैश किया जाता है (कैश से निष्कासित होने तक) –
@marc_s: मुझे लगता है कि सवाल यह है कि दृश्य डीडीएल एसक्यूएल कैश किया गया है या नहीं। – user2672165