1 থেকে 400 পর্যন্ত 400 সারি সহ নিম্নলিখিত হিপ টেবিলটি দেওয়া:
DROP TABLE IF EXISTS dbo.N;
GO
SELECT
SV.number
INTO dbo.N
FROM master.dbo.spt_values AS SV
WHERE
SV.[type] = N'P'
AND SV.number BETWEEN 1 AND 400;
এবং নিম্নলিখিত সেটিংস:
SET NOCOUNT ON;
SET STATISTICS IO, TIME OFF;
SET STATISTICS XML OFF;
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
নিম্নলিখিত SELECT
বিবৃতিটি প্রায় 6 সেকেন্ডে পূর্ণ হয় ( ডেমো , পরিকল্পনা ):
DECLARE @n integer = 400;
SELECT
c = COUNT_BIG(*)
FROM dbo.N AS N
CROSS JOIN dbo.N AS N2
CROSS JOIN dbo.N AS N3
WHERE
N.number <= @n
AND N2.number <= @n
AND N3.number <= @n
OPTION
(OPTIMIZE FOR (@n = 1));
দ্রষ্টব্য: @ দফাটি OPTIMIZE FOR
কেবলমাত্র একটি সংবেদনশীল আকারের রেপ্রো প্রোডাক্ট করার জন্য যা বিভিন্ন কারণে বিভিন্ন কারণে উদ্ভুত হতে পারে এমন একটি কার্ডিনালিটি দুর্লভতা সহ আসল সমস্যার প্রয়োজনীয় বিবরণ ক্যাপচার করে।
যখন একক-সারি আউটপুট কোনও টেবিলে লেখা হয়, তখন এটি 19 সেকেন্ডে লাগে ( ডেমো , পরিকল্পনা ):
DECLARE @T table (c bigint NOT NULL);
DECLARE @n integer = 400;
INSERT @T
(c)
SELECT
c = COUNT_BIG(*)
FROM dbo.N AS N
CROSS JOIN dbo.N AS N2
CROSS JOIN dbo.N AS N3
WHERE
N.number <= @n
AND N2.number <= @n
AND N3.number <= @n
OPTION
(OPTIMIZE FOR (@n = 1));
মৃত্যুদন্ড কার্যকর করার পরিকল্পনাগুলি এক সারি সন্নিবেশ করা বাদ দিয়ে একইরকম প্রদর্শিত হবে।
সমস্ত অতিরিক্ত সময় সিপিইউ ব্যবহারের দ্বারা গ্রাস করা হবে বলে মনে হয়।
INSERT
বিবৃতি এত ধীর কেন ?