ความแตกต่างระหว่าง Clustered และดัชนีที่ไม่เป็นคลัสเตอร์
ความแตกต่างที่สำคัญระหว่าง Clusterดัชนี ed และดัชนีที่ไม่คลัสเตอร์
- ดัชนีคลัสเตอร์เป็นประเภทของดัชนีที่เรียงลำดับแถวข้อมูลในตารางตามค่าคีย์ ในขณะที่ดัชนีแบบไม่คลัสเตอร์จะจัดเก็บข้อมูลในตำแหน่งหนึ่งและดัชนีในตำแหน่งอื่น
- Clusterดัชนี ed จะจัดเก็บหน้าข้อมูลในโหนดย่อยของดัชนี ในขณะที่วิธีดัชนีแบบไม่คลัสเตอร์จะไม่จัดเก็บหน้าข้อมูลในโหนดย่อยของดัชนี
- ดัชนีคลัสเตอร์ไม่ต้องการพื้นที่ดิสก์เพิ่มเติม ในขณะที่ดัชนีที่ไม่ใช่คลัสเตอร์ต้องการพื้นที่ดิสก์เพิ่มเติม
- Cluster ดัชนีจะช่วยให้เข้าถึงข้อมูลได้รวดเร็วยิ่งขึ้น แต่ดัชนีที่ไม่ได้อยู่ในคลัสเตอร์นั้นจะเข้าถึงได้ช้ากว่า
ดัชนีคืออะไร?
ดัชนีคือคีย์ที่สร้างขึ้นจากคอลัมน์ตั้งแต่หนึ่งคอลัมน์ขึ้นไปในฐานข้อมูลที่ช่วยเพิ่มความเร็วในการดึงแถวจากตารางหรือมุมมอง คีย์นี้ช่วยให้ฐานข้อมูลชอบ Oracle, เซิร์ฟเวอร์ SQL, MySQLฯลฯ เพื่อค้นหาแถวที่เกี่ยวข้องกับค่าคีย์ได้อย่างรวดเร็ว
ดัชนีสองประเภทคือ:
- Clusterดัชนีเอ็ด
- ไม่Clusterดัชนีเอ็ด
อะไรคือ a Clusterดัชนีเอ็ด?
Cluster ดัชนีเป็นประเภทของดัชนีที่เรียงลำดับแถวข้อมูลในตารางตามค่าคีย์ ในฐานข้อมูลจะมีดัชนีแบบคลัสเตอร์เพียงหนึ่งรายการต่อตาราง
ดัชนีคลัสเตอร์จะกำหนดลำดับในการจัดเก็บข้อมูลในตาราง ซึ่งสามารถเรียงลำดับได้เพียงวิธีเดียวเท่านั้น ดังนั้น ตารางแต่ละตารางจึงมีดัชนีคลัสเตอร์ได้เพียงดัชนีเดียวเท่านั้น โดยปกติแล้ว ใน RDBMS คีย์หลักจะช่วยให้คุณสร้างดัชนีคลัสเตอร์ตามคอลัมน์เฉพาะนั้นๆ ได้
ดัชนีแบบไม่คลัสเตอร์คืออะไร
ดัชนีที่ไม่คลัสเตอร์จะจัดเก็บข้อมูลในตำแหน่งหนึ่งและดัชนีจะอยู่ในตำแหน่งอื่น ดัชนีจะมีตัวชี้ไปยังตำแหน่งของข้อมูลนั้น ตารางเดียวสามารถมีดัชนีที่ไม่คลัสเตอร์ได้หลายรายการ เนื่องจากดัชนีในดัชนีที่ไม่คลัสเตอร์จะถูกจัดเก็บในตำแหน่งต่างๆ กัน
ตัวอย่างเช่น หนังสืออาจมีดัชนีได้มากกว่าหนึ่งรายการ โดยหนึ่งรายการอยู่ตอนต้นซึ่งแสดงเนื้อหาของหนังสือตามหน่วย ในขณะที่ดัชนีที่สองแสดงดัชนีของคำศัพท์ตามลำดับตัวอักษร
ดัชนีที่ไม่จัดกลุ่มถูกกำหนดไว้ในฟิลด์ที่ไม่จัดลำดับของตาราง วิธีการจัดทำดัชนีประเภทนี้ช่วยให้คุณปรับปรุงประสิทธิภาพของแบบสอบถามที่ใช้คีย์ที่ไม่ได้รับการกำหนดเป็นคีย์หลัก ดัชนีที่ไม่จัดกลุ่มช่วยให้คุณสามารถเพิ่มคีย์เฉพาะสำหรับตารางได้
ลักษณะของ Clusterดัชนีเอ็ด
- การจัดเก็บข้อมูลเริ่มต้นและเรียงลำดับ
- ใช้เพียงหนึ่งหรือมากกว่าหนึ่งคอลัมน์สำหรับดัชนี
- ช่วยให้คุณจัดเก็บข้อมูลและดัชนีไว้ด้วยกัน
- fragmentation
- Operations
- Clusterการสแกนดัชนี ed และการค้นหาดัชนี
- การค้นหาคีย์
ลักษณะของดัชนีที่ไม่คลัสเตอร์
- เก็บค่าคีย์เท่านั้น
- ตัวชี้ไปยังฮีป/Clustered แถวดัชนี
- อนุญาตให้เข้าถึงข้อมูลรอง
- เชื่อมโยงไปยังข้อมูล
- Operaการสแกนดัชนีและการค้นหาดัชนี
- คุณสามารถสร้างดัชนีแบบไม่คลัสเตอร์สำหรับตารางหรือมุมมองได้
- แถวดัชนีแต่ละแถวในดัชนีที่ไม่ได้คลัสเตอร์จะจัดเก็บค่าคีย์ที่ไม่ได้คลัสเตอร์และตัวระบุตำแหน่งแถว
Clusterความแตกต่างที่สำคัญระหว่าง ed และ Non-cluster Index ใน SQL
พารามิเตอร์ | Clustered | ไม่เป็นคลัสเตอร์ |
---|---|---|
ใช้สำหรับการ | คุณสามารถเรียงลำดับบันทึกและจัดเก็บดัชนีคลัสเตอร์ในหน่วยความจำทางกายภาพตามลำดับได้ | ดัชนีที่ไม่คลัสเตอร์ช่วยให้คุณสร้างลำดับตรรกะสำหรับแถวข้อมูลและใช้ตัวชี้สำหรับไฟล์ข้อมูลทางกายภาพ |
วิธีการจัดเก็บ | ช่วยให้คุณจัดเก็บหน้าข้อมูลในโหนดปลายสุดของดัชนี | วิธีการจัดทำดัชนีนี้ไม่เคยเก็บหน้าข้อมูลไว้ในโหนดปลายสุดของดัชนี |
ขนาด | ขนาดของดัชนีคลัสเตอร์มีขนาดค่อนข้างใหญ่ | ขนาดของดัชนีที่ไม่ได้อยู่ในคลัสเตอร์นั้นมีขนาดเล็กเมื่อเทียบกับดัชนีที่อยู่ในคลัสเตอร์ |
การเข้าถึงข้อมูล | ได้เร็วขึ้น | ช้ากว่าเมื่อเทียบกับดัชนีคลัสเตอร์ |
พื้นที่ดิสก์เพิ่มเติม | ไม่จำเป็นต้องใช้ | จำเป็นต้องจัดเก็บดัชนีแยกต่างหาก |
ประเภทของกุญแจ | โดยค่าเริ่มต้น คีย์หลักของตารางคือ a Clusterดัชนีเอ็ด | สามารถใช้โดยมีข้อจำกัดเฉพาะบนโต๊ะซึ่งทำหน้าที่เป็นคีย์ผสม |
คุณสมบัติหลัก | ดัชนีคลัสเตอร์สามารถปรับปรุงประสิทธิภาพการดึงข้อมูลได้ | ควรสร้างขึ้นบนคอลัมน์ที่ใช้ในการรวม |
ตัวอย่างของดัชนีคลัสเตอร์
ในตัวอย่างด้านล่าง SalesOrderDetailID คือดัชนีคลัสเตอร์ ตัวอย่างแบบสอบถามเพื่อดึงข้อมูล
SELECT CarrierTrackingNumber, UnitPrice FROM SalesData WHERE SalesOrderDetailID = 6
ตัวอย่างดัชนีที่ไม่คลัสเตอร์
ในตัวอย่างด้านล่าง ดัชนีที่ไม่ใช่คลัสเตอร์จะถูกสร้างขึ้นบน OrderQty และ ProductID ดังนี้
CREATE INDEX myIndex ON SalesData (ProductID, OrderQty)
แบบสอบถามต่อไปนี้จะถูกดึงข้อมูลได้เร็วกว่าเมื่อเทียบกับดัชนีคลัสเตอร์
SELECT Product ID, OrderQty FROM SalesData WHERE ProductID = 714
ข้อดีของการ Clusterดัชนีเอ็ด
ข้อดี/ประโยชน์ของดัชนีคลัสเตอร์มีดังนี้:
- Clusterดัชนี ed เป็นตัวเลือกที่เหมาะสำหรับช่วงหรือกลุ่มตามประเภทการค้นหาสูงสุด ต่ำสุด และจำนวนนับ
- ในดัชนีประเภทนี้ การค้นหาสามารถตรงไปยังจุดใดจุดหนึ่งในข้อมูล เพื่อให้คุณสามารถอ่านต่อได้ตามลำดับจากจุดนั้น
- Clusterวิธี ed index ใช้กลไกตำแหน่งเพื่อค้นหารายการดัชนีที่จุดเริ่มต้นของช่วง
- เป็นวิธีที่มีประสิทธิภาพสำหรับการค้นหาช่วงเมื่อมีการร้องขอช่วงของค่าคีย์การค้นหา
- ช่วยให้คุณลดการถ่ายโอนเพจและเพิ่มการเข้าถึงแคชให้สูงสุด
ข้อดีของดัชนีแบบไม่คลัสเตอร์
ข้อดีของการใช้ดัชนีแบบไม่คลัสเตอร์มีดังนี้:
- ดัชนีที่ไม่คลัสเตอร์ช่วยให้คุณดึงข้อมูลได้อย่างรวดเร็วจากตารางฐานข้อมูล
- ช่วยให้คุณหลีกเลี่ยงต้นทุนค่าใช้จ่ายเบื้องต้นที่เกี่ยวข้องกับดัชนีคลัสเตอร์
- ตารางอาจมีดัชนีที่ไม่คลัสเตอร์หลายรายการใน อาร์ดีบีเอ็มเอส- ดังนั้นจึงสามารถใช้สร้างดัชนีได้มากกว่าหนึ่งรายการ
ข้อเสียของ Clusterดัชนีเอ็ด
นี่คือข้อเสียของการใช้ดัชนีคลัสเตอร์:
- ส่วนแทรกจำนวนมากไม่เรียงตามลำดับ
- ดัชนีคลัสเตอร์จะสร้างการแบ่งหน้าอย่างต่อเนื่องมากมาย ซึ่งรวมถึงหน้าข้อมูลและหน้าดัชนีด้วย
- งานเสริมสำหรับ SQL สำหรับการแทรก การอัปเดต และการลบ
- ดัชนีคลัสเตอร์ใช้เวลาในการอัปเดตระเบียนนานกว่าเมื่อมีการเปลี่ยนแปลงฟิลด์ในดัชนีคลัสเตอร์
- โหนดใบส่วนใหญ่มีหน้าข้อมูลในดัชนีคลัสเตอร์
ข้อเสียของดัชนีที่ไม่คลัสเตอร์
นี่คือข้อเสียของการใช้ดัชนีแบบไม่คลัสเตอร์:
- ดัชนีที่ไม่ได้อยู่ในคลัสเตอร์จะช่วยให้คุณจัดเก็บข้อมูลในลำดับเชิงตรรกะ แต่ไม่สามารถเรียงลำดับแถวข้อมูลทางกายภาพได้
- กระบวนการค้นหาบนดัชนีที่ไม่ได้อยู่ในคลัสเตอร์จะมีค่าใช้จ่ายสูง
- ทุกครั้งที่มีการอัปเดตคีย์การคลัสเตอร์ จะต้องมีการอัปเดตที่สอดคล้องกับดัชนีที่ไม่คลัสเตอร์ เนื่องจากจะจัดเก็บคีย์การคลัสเตอร์