এখানে তিনটি সাধারণ পরীক্ষা রয়েছে যা একই ডেটা পড়ে, তবুও খুব আলাদা যৌক্তিক পঠনগুলির প্রতিবেদন করে:
সেটআপ
নিম্নলিখিত স্ক্রিপ্টটি 100 টি অভিন্ন সারি সহ একটি পরীক্ষার সারণী তৈরি করে, প্রতিটি সারণীতে সঞ্চিত তা নিশ্চিত করার জন্য পর্যাপ্ত ডেটা সহ একটি এক্সএমএল কলাম ধারণ করে । আমার পরীক্ষার ডাটাবেসে, উত্পাদিত এক্সএমএলটির দৈর্ঘ্য প্রতিটি সারির 20,204 বাইট।
-- Conditional drop
IF OBJECT_ID(N'dbo.XMLTest', N'U') IS NOT NULL
DROP TABLE dbo.XMLTest;
GO
-- Create test table
CREATE TABLE dbo.XMLTest
(
ID integer IDENTITY PRIMARY KEY,
X xml NULL
);
GO
-- Add 100 wide xml rows
DECLARE @X xml;
SET @X =
(
SELECT TOP (100) *
FROM sys.columns AS C
FOR XML
PATH ('row'),
ROOT ('root'),
TYPE
);
INSERT dbo.XMLTest
(X)
SELECT TOP (100)
@X
FROM sys.columns AS C;
-- Flush dirty buffers
CHECKPOINT;
টেস্ট
নিম্নলিখিত তিনটি পরীক্ষার সাথে এক্সএমএল কলামটি পড়ে:
- একটি সরল
SELECT
বিবৃতি - একটি ভেরিয়েবলের জন্য এক্সএমএল নির্ধারণ করা
SELECT INTO
একটি অস্থায়ী সারণী তৈরি করতে ব্যবহার করা
-- No row count messages or graphical plan
-- Show I/O statistics
SET NOCOUNT ON;
SET STATISTICS XML OFF;
SET STATISTICS IO ON;
GO
PRINT CHAR(10) + '=== Plain SELECT ===='
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;
SELECT XT.X
FROM dbo.XMLTest AS XT;
GO
PRINT CHAR(10) + '=== Assign to a variable ===='
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;
DECLARE @X xml;
SELECT
@X = XT.X
FROM dbo.XMLTest AS XT;
GO
PRINT CHAR(10) + '=== SELECT INTO ===='
IF OBJECT_ID(N'tempdb..#T', N'U') IS NOT NULL
DROP TABLE #T;
DBCC DROPCLEANBUFFERS WITH NO_INFOMSGS;
SELECT
XT.X
INTO #T
FROM dbo.XMLTest AS XT
GO
SET STATISTICS IO OFF;
ফলাফল
আউটপুটটি হ'ল:
=== সরল নির্বাচন ==== সারণি 'এক্সএমএল টেস্ট'। স্ক্যান কাউন্ট 1, লজিকাল রিড 3, ফিজিকাল রিডস 1, রিড-ফরোয়ার্ড 0, লব লজিকাল 79৯৫, লব ফিজিকাল ৩ 37, লব রিড-ফরোয়ার্ড 6৯6 পড়ে। === একটি ভেরিয়েবলকে বরাদ্দ করুন ==== সারণি 'এক্সএমএল টেস্ট'। স্ক্যান কাউন্ট 1, লজিকাল রিড 3, ফিজিকাল রিডস 1, রিড-ফরোয়ার্ড 0, লব লজিকাল 0, পঠিত শারীরিক 0, পঠন 0-পঠন 0 === নির্বাচন করুন ==== সারণি 'এক্সএমএল টেস্ট'। স্ক্যান কাউন্ট 1, লজিকাল রিড 3, ফিজিকাল রিডস 1, রিড-ফরোয়ার্ড 0, লব লজিকাল 300, পঠিত শারীরিক পড়া 37, লব রিড-ফরোয়ার্ড 400 পড়ছে।
প্রশ্নাবলি
- এলওবি এত আলাদা কেন পড়ে?
- প্রতিটি পরীক্ষায় নিশ্চয়ই একই তথ্য পড়েছিল?