আমি এই নিবন্ধগুলি ইটজিক বেন-গানের পিসিমেগে পড়েছি :
সেকেন্ড এবং আপনি স্ক্যান পার্ট আইটি ভাগ করবেন: যখন অপ্টিমাইজারটি অপ্টিমাইজ করবেন না
এবং আপনি দ্বিতীয় খণ্ড স্ক্যান করতে পারবেন: আরোহণ কীগুলি
আমি বর্তমানে আমাদের সমস্ত বিভাজনযুক্ত টেবিলের সাথে একটি "গ্রুপযুক্ত সর্বোচ্চ" সমস্যাটি নিয়েছি। আমরা ইটজিক বেন-গান সর্বোচ্চ (আইডি) পাওয়ার জন্য সরবরাহিত কৌশলটি ব্যবহার করি তবে কখনও কখনও এটি চালানো হয় না:
DECLARE @MaxIDPartitionTable BIGINT
SELECT @MaxIDPartitionTable = ISNULL(MAX(IDPartitionedTable), 0)
FROM ( SELECT *
FROM ( SELECT partition_number PartitionNumber
FROM sys.partitions
WHERE object_id = OBJECT_ID('fct.MyTable')
AND index_id = 1
) T1
CROSS APPLY ( SELECT ISNULL(MAX(UpdatedID), 0) AS IDPartitionedTable
FROM fct.MyTable s
WHERE $PARTITION.PF_MyTable(s.PCTimeStamp) = PartitionNumber
AND UpdatedID <= @IDColumnThresholdValue
) AS o
) AS T2;
SELECT @MaxIDPartitionTable
আমি এই পরিকল্পনা পেয়েছি
তবে 45 মিনিটের পরে, রিডগুলি দেখুন look
reads writes physical_reads
12,949,127 2 12,992,610
যে আমি এড়িয়ে যেতে sp_whoisactive
।
সাধারণত এটি বেশ দ্রুত চলে তবে আজ নয়।
সম্পাদনা করুন: পার্টিশন সহ টেবিল কাঠামো:
CREATE PARTITION FUNCTION [MonthlySmallDateTime](SmallDateTime) AS RANGE RIGHT FOR VALUES (N'2000-01-01T00:00:00.000', N'2000-02-01T00:00:00.000' /* and many more */)
go
CREATE PARTITION SCHEME PS_FctContractualAvailability AS PARTITION [MonthlySmallDateTime] TO ([Standard], [Standard])
GO
CREATE TABLE fct.MyTable(
MyTableID BIGINT IDENTITY(1,1),
[DT1TurbineID] INT NOT NULL,
[PCTimeStamp] SMALLDATETIME NOT NULL,
Filler CHAR(100) NOT NULL DEFAULT 'N/A',
UpdatedID BIGINT NULL,
UpdatedDate DATETIME NULL
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED
(
[DT1TurbineID] ASC,
[PCTimeStamp] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, DATA_COMPRESSION = ROW) ON [PS_FctContractualAvailability]([PCTimeStamp])
) ON [PS_FctContractualAvailability]([PCTimeStamp])
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_UpdatedID_PCTimeStamp] ON [fct].MyTable
(
[UpdatedID] ASC,
[PCTimeStamp] ASC
)
INCLUDE ( [UpdatedDate])
WHERE ([UpdatedID] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, DATA_COMPRESSION = ROW) ON [PS_FctContractualAvailability]([PCTimeStamp])
GO