ในการเพิ่มบันทึกย่อที่สำคัญมากเกี่ยวกับสิ่งที่ Mark S. ได้กล่าวไว้ในโพสต์ของเขา ในสคริปต์ SQL เฉพาะที่ถูกกล่าวถึงในคำถามคุณไม่สามารถพูดถึงกลุ่มไฟล์ที่แตกต่างกันสองกลุ่มสำหรับการจัดเก็บแถวข้อมูลของคุณและโครงสร้างข้อมูลดัชนี
สาเหตุที่เกิดจากข้อเท็จจริงที่ว่าดัชนีที่ถูกสร้างขึ้นในกรณีนี้เป็นดัชนีคลัสเตอร์ในคอลัมน์คีย์หลักของคุณ ข้อมูลดัชนีคลัสเตอร์และแถวข้อมูลในตารางของคุณไม่สามารถอยู่ในกลุ่มไฟล์อื่นได้
ดังนั้นในกรณีที่คุณมีสองกลุ่มไฟล์บนฐานข้อมูลของคุณเช่นประถมศึกษาและมัธยมศึกษาสคริปต์แล้วกล่าวถึงข้างล่างจะเก็บข้อมูลแถวของคุณและข้อมูลดัชนีคลัสเตอร์ทั้งในกลุ่มของแฟ้ม PRIMARY ตัวเองแม้ว่าฉันได้กล่าวกลุ่มไฟล์ที่แตกต่าง ( [SECONDARY]
) สำหรับข้อมูลตาราง . น่าสนใจยิ่งกว่าสคริปต์ทำงานได้สำเร็จเช่นกัน (เมื่อฉันคาดว่าจะให้ข้อผิดพลาดเนื่องจากฉันได้รับกลุ่มไฟล์ที่แตกต่างกันสองกลุ่ม: P) SQL Server ใช้เคล็ดลับเบื้องหลังอย่างเงียบ ๆ และชาญฉลาด
CREATE TABLE [dbo].[be_Categories](
[CategoryID] [uniqueidentifier] ROWGUIDCOL NOT NULL CONSTRAINT [DF_be_Categories_CategoryID] DEFAULT (newid()),
[CategoryName] [nvarchar](50) NULL,
[Description] [nvarchar](200) NULL,
[ParentID] [uniqueidentifier] NULL,
CONSTRAINT [PK_be_Categories] PRIMARY KEY CLUSTERED
(
[CategoryID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [SECONDARY]
GO
หมายเหตุ: ดัชนีของคุณสามารถอยู่ในกลุ่มไฟล์ที่แตกต่างเท่านั้นถ้าดัชนีที่ถูกสร้างขึ้นไม่เป็นคลัสเตอร์ในธรรมชาติ
สคริปต์ด้านล่างซึ่งสร้างดัชนีที่ไม่ทำคลัสเตอร์จะถูกสร้างใน[SECONDARY]
กลุ่มไฟล์แทนเมื่อข้อมูลตารางอยู่ใน[PRIMARY]
กลุ่มไฟล์แล้ว:
CREATE NONCLUSTERED INDEX [IX_Categories] ON [dbo].[be_Categories]
(
[CategoryName] ASC
)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 [Secondary]
GO
คุณสามารถรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการจัดเก็บดัชนีที่ไม่ได้ทำคลัสเตอร์ในกลุ่มไฟล์ที่แตกต่างกันเพื่อช่วยให้แบบสอบถามของคุณทำงานได้ดีขึ้น นี่คือลิงค์เดียว