ใช่มุมมองสามารถกำหนดดัชนีคลัสเตอร์ได้และเมื่อเสร็จแล้วจะมีการจัดเก็บผลลัพธ์ชั่วคราวที่สามารถเร่งการสืบค้นที่เกิดขึ้นได้
อัปเดต: มีคนอย่างน้อยสามคนโหวตฉันในเรื่องนี้ ด้วยความเคารพฉันคิดว่าพวกเขาผิด เอกสารของ Microsoft ระบุชัดเจนว่า Views สามารถปรับปรุงประสิทธิภาพได้
อย่างแรกคือมีการขยายมุมมองแบบง่าย ๆ และไม่สนับสนุนการปรับปรุงประสิทธิภาพโดยตรง - นั่นเป็นเรื่องจริง อย่างไรก็ตามมุมมองที่จัดทำดัชนีสามารถปรับปรุงประสิทธิภาพได้ อย่างมาก
ให้ฉันไปที่เอกสารโดยตรง:
หลังจากสร้างดัชนีคลัสเตอร์ที่ไม่ซ้ำกันในมุมมองชุดผลลัพธ์ของมุมมองจะเกิดขึ้นทันทีและคงอยู่ในที่เก็บข้อมูลทางกายภาพในฐานข้อมูลทำให้ประหยัดค่าใช้จ่ายในการดำเนินการที่มีค่าใช้จ่ายสูง ณ เวลาดำเนินการ
ประการที่สองมุมมองที่จัดทำดัชนีเหล่านี้สามารถทำงานได้แม้ว่าพวกเขาจะไม่ได้ถูกอ้างถึงโดยตรงโดยแบบสอบถามอื่น ๆเนื่องจากเครื่องมือเพิ่มประสิทธิภาพจะใช้พวกเขาแทนการอ้างอิงตารางตามความเหมาะสม
เอกสารอีกครั้ง:
มุมมองที่จัดทำดัชนีสามารถใช้ในการดำเนินการแบบสอบถามได้สองวิธี แบบสอบถามสามารถอ้างอิงมุมมองที่จัดทำดัชนีโดยตรงหรือที่สำคัญกว่านั้นเครื่องมือเพิ่มประสิทธิภาพแบบสอบถามสามารถเลือกมุมมองหากพิจารณาว่าสามารถแทนที่มุมมองสำหรับแบบสอบถามบางส่วนหรือทั้งหมดในแผนคิวรีที่มีต้นทุนต่ำที่สุด ในกรณีที่สองมุมมองที่จัดทำดัชนีจะใช้แทนตารางต้นแบบและดัชนีทั่วไป ไม่จำเป็นต้องอ้างถึงมุมมองในแบบสอบถามเพื่อให้เครื่องมือเพิ่มประสิทธิภาพแบบสอบถามใช้ในระหว่างการดำเนินการค้นหา สิ่งนี้อนุญาตให้แอปพลิเคชันที่มีอยู่ได้รับประโยชน์จากมุมมองที่จัดทำดัชนีใหม่โดยไม่ต้องเปลี่ยนแอปพลิเคชันเหล่านั้น
เอกสารฉบับนี้เช่นเดียวกับชาร์ตแสดงให้เห็นถึงการปรับปรุงประสิทธิภาพสามารถพบได้ที่นี่
อัปเดต 2:คำตอบได้รับการวิพากษ์วิจารณ์บนพื้นฐานที่ว่าเป็น "ดัชนี" ที่ให้ประโยชน์ด้านประสิทธิภาพไม่ใช่ "มุมมอง" อย่างไรก็ตามสิ่งนี้สามารถหักล้างได้ง่าย
ให้เราบอกว่าเราเป็น บริษัท ซอฟต์แวร์ในประเทศเล็ก ๆ ฉันจะใช้ลิทัวเนียเป็นตัวอย่าง เราขายซอฟต์แวร์ทั่วโลกและเก็บบันทึกของเราในฐานข้อมูล SQL Server เราประสบความสำเร็จเป็นอย่างมากในอีกไม่กี่ปีเรามีบันทึกมากกว่า 1,000,000 รายการ อย่างไรก็ตามเราต้องรายงานยอดขายเพื่อวัตถุประสงค์ด้านภาษีและเราพบว่าเราขายซอฟต์แวร์ของเราเพียง 100 ชุดในประเทศของเรา ด้วยการสร้างมุมมองที่จัดทำดัชนีของลิทัวเนียเพียงระเบียนเราจะได้รับการเก็บบันทึกที่เราต้องการในแคชที่จัดทำดัชนีตามที่อธิบายไว้ในเอกสาร MS เมื่อเราเรียกใช้รายงานยอดขายลิทัวเนียของเราในปี 2008 แบบสอบถามของเราจะค้นหาผ่านดัชนีที่มีความลึกเพียง 7 (Log2 (100) ด้วยใบที่ไม่ได้ใช้) ถ้าเราจะทำสิ่งเดียวกันโดยไม่ต้องใช้ VIEW และพึ่งอาศัยดัชนีในตารางเราจะต้องสำรวจแผนภูมิดัชนีที่มีความลึกการค้นหา 21!
เห็นได้ชัดว่ามุมมองนั้นจะช่วยให้เราได้เปรียบด้านประสิทธิภาพ (3x) ในการใช้งานดัชนีอย่างง่ายเพียงอย่างเดียว ฉันพยายามใช้ตัวอย่างจริง แต่คุณจะทราบว่ารายการขายง่าย ๆ ของลิทัวเนียจะทำให้เราได้เปรียบมากขึ้น
โปรดทราบว่าฉันแค่ใช้ b-tree สำหรับตัวอย่างของฉัน ในขณะที่ฉันค่อนข้างแน่ใจว่า SQL Server ใช้ตัวแปร b-tree บางตัวฉันไม่ทราบรายละเอียด อย่างไรก็ตามประเด็นก็คือ
อัปเดต 3:คำถามเกิดขึ้นเกี่ยวกับว่ามุมมองแบบดัชนีใช้ดัชนีที่วางอยู่บนตารางพื้นฐานหรือไม่ นั่นคือการถอดความ: "มุมมองที่จัดทำดัชนีเป็นเพียงเทียบเท่าดัชนีมาตรฐานและมันไม่มีอะไรใหม่หรือไม่ซ้ำกับมุมมอง" หากเป็นจริงแน่นอนการวิเคราะห์ข้างต้นจะไม่ถูกต้อง! ให้ฉันเสนอราคาจากเอกสาร Microsoft ที่แสดงให้เห็นว่าทำไมฉันคิดว่าการวิจารณ์นี้ไม่ถูกต้องหรือเป็นจริง:
การใช้ดัชนีเพื่อปรับปรุงประสิทธิภาพการสืบค้นไม่ใช่แนวคิดใหม่ อย่างไรก็ตามมุมมองที่จัดทำดัชนีจะให้ประโยชน์ด้านประสิทธิภาพเพิ่มเติมซึ่งไม่สามารถทำได้โดยใช้ดัชนีมาตรฐาน
เมื่อรวมกับการอ้างถึงข้างต้นเกี่ยวกับการคงอยู่ของข้อมูลในที่จัดเก็บข้อมูลจริงและข้อมูลอื่น ๆ ในเอกสารเกี่ยวกับวิธีการสร้างดัชนีใน Views ฉันคิดว่ามันปลอดภัยที่จะกล่าวว่ามุมมองที่จัดทำดัชนีไม่ได้เป็นเพียง ดัชนีที่กำหนดไว้ในตารางหลัก ดังนั้นฉันยังคงยืนหยัดอยู่กับคำตอบนี้