আমার একটি এসকিউএল সার্ভার 2008 আর 2 টেবিল রয়েছে যার স্কিমার কাঠামোটি নীচে দেখায়:
CREATE TABLE [dbo].[CDSIM_BE]
(
[ID] [bigint] NOT NULL,
[EquipmentID] [varchar](50) NOT NULL,
[SerialNumber] [varchar](50) NULL,
[PyrID] [varchar](50) NULL,
[MeasMode] [varchar](50) NULL,
[ReadTime] [datetime] NOT NULL,
[SubID] [varchar](15) NULL,
[ProbePosition] [float] NULL,
[DataPoint] [int] NULL,
CONSTRAINT [PK_CDSIM_BE]
PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [MonthlyArchiveScheme9]([ReadTime])
) ON [MonthlyArchiveScheme9]([ReadTime])
CREATE NONCLUSTERED INDEX [idx_CDSIM_BE__SubID_ProbePosition]
ON [dbo].[CDSIM_BE] ([SubID] ASC, [ProbePosition] ASC)
INCLUDE ([EquipmentID], [ReadTime], [BECorr])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MonthlyArchiveScheme9]([ReadTime])
CREATE NONCLUSTERED INDEX [IX_CDSIM_BE_ProbePosition]
ON [dbo].[CDSIM_BE] ([ProbePosition] ASC)
INCLUDE ([SerialNumber], [SubID])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MonthlyArchiveScheme9]([ReadTime])
CREATE NONCLUSTERED INDEX [IX_CSDIM_Readtime]
ON [dbo].[CDSIM_BE]([ReadTime] ASC)
INCLUDE ([EquipmentID])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MonthlyArchiveScheme9]([ReadTime])
এবং আমি এই সাধারণ জিজ্ঞাসাটি সম্পাদন করছি:
Select Max(Id)
From dbo.CDSIM_BE
টেবিলটিতে 2.5 ডলার সারি রয়েছে।
ক্যোয়ারী পরিকল্পনা শো একটি সূচক স্ক্যান করা হচ্ছে IX_CdSIM_BE_ProbePosition
সূচি। আমি ভাবছি কেন এসকিউএল সার্ভার কেবল ক্লাস্টারড (এবং প্রাথমিক) সূচকটি ব্যবহার করবে না এবং সঙ্গে সঙ্গে টেবিলের সর্বশেষ সারিতে যাবে এবং আইডি মানটি পুনরুদ্ধার করবে, কারণ এটি অবশ্যই সর্বোচ্চ হতে হবে be
ReadTime
যাতে এটি আপনার বর্ণনা অনুযায়ী পিকে ব্যবহার করতে পারে না। Max(Id)
প্রতিটি পার্টিশনের জন্য এটি সন্ধান করতে হবে এবং তারপরে সর্বাধিক সন্ধান করতে হবে। Dba.stackexchange.com/a/99418/3690
select top 1 Id from dbo.CDSIM_BE order by Id descending;