เลือกเวลาที่จะใช้แต่ละตัวเลือก

เสร็จสมบูรณ์เมื่อ

วัตถุความสามารถในการเขียนโปรแกรมของ SQL Server มีวิธีต่างๆ ในการห่อหุ้มและนําตรรกะกลับมาใช้ใหม่ในฐานข้อมูลของคุณ วัตถุแต่ละชนิด ได้แก่ มุมมองกระบวนงานที่เก็บไว้ฟังก์ชัน และ ทริกเกอร์ มีจุดประสงค์ที่แตกต่างกันและมีความสามารถเฉพาะตัว

เปรียบเทียบตัวเลือก

ตารางต่อไปนี้สรุปความสามารถหลักและข้อจํากัดของวัตถุแต่ละชนิด:

ความสามารถ Views กระบวนงานที่เก็บไว้ Functions ทริกเกอร์
ยอมรับพารามิเตอร์ ไม่ ใช่ ใช่ ไม่
แก้ไขข้อมูล จำกัด ใช่ ไม่ ใช่
ส่งกลับชุดผลลัพธ์ ใช่ ใช่ มี (TVF) ไม่
ใช้ใน SELECT/JOIN ใช่ ไม่ ใช่ ไม่
การควบคุมธุรกรรม ไม่ ใช่ ไม่ ใช่
การดําเนินการอัตโนมัติ ไม่ ไม่ ไม่ ใช่
การแคชแผนการดําเนินการ ไม่ ใช่ แตก ต่าง กัน ใช่

มุมมองสามารถปรับเปลี่ยนข้อมูลได้ก็ต่อเมื่อการเปลี่ยนแปลงมีผลต่อตารางฐานเดียวเท่านั้น ฟังก์ชันที่มีค่าตารางแบบอินไลน์ได้รับประโยชน์จากการแคชแผน เนื่องจากเครื่องมือเพิ่มประสิทธิภาพจะขยายฟังก์ชันเหล่านี้ลงในแผนคิวรีโดยตรง TVF แบบหลายคําสั่งและฟังก์ชันสเกลาร์ถือเป็น "กล่องดํา" ซึ่งเครื่องมือเพิ่มประสิทธิภาพไม่สามารถมองเห็นภายในได้ ซึ่งมักจะนําไปสู่การประมาณแถวที่ไม่ถูกต้องและแผนที่ไม่เหมาะสม

เลือกตามความต้องการของคุณ

ออบเจ็กต์ความสามารถในการเขียนโปรแกรมที่เหมาะสมขึ้นอยู่กับสิ่งที่คุณต้องทําให้สําเร็จ ใช้กรอบการตัดสินใจนี้เพื่อเป็นแนวทางในการเลือกของคุณ:

เลือกมุมมองเมื่อคุณต้องการ:

  • ลดความซับซ้อนในการเข้าถึงการรวมที่ซับซ้อนหรือข้อมูลที่กรองโดยทั่วไป
  • จัดเตรียมชั้นความปลอดภัยโดยการควบคุมการมองเห็นคอลัมน์และแถว
  • สร้างอินเทอร์เฟซที่เสถียรสําหรับตารางพื้นฐานที่อาจเปลี่ยนแปลง
  • นําเสนอข้อมูลโดยไม่ต้องยอมรับพารามิเตอร์หรือแก้ไขค่า

เลือกกระบวนงานที่เก็บไว้เมื่อคุณต้องการ:

  • ดําเนินการตรรกะทางธุรกิจที่ซับซ้อนด้วยคําสั่งหลายคําสั่ง
  • แก้ไขข้อมูลในหลายตารางในธุรกรรมเดียว
  • ยอมรับพารามิเตอร์อินพุตและส่งคืนพารามิเตอร์เอาต์พุตหรือชุดผลลัพธ์
  • ใช้การจัดการข้อผิดพลาดและการควบคุมธุรกรรม

เลือกฟังก์ชันเมื่อคุณต้องการ:

  • ทําการคํานวณที่นํากลับมาใช้ใหม่ได้ซึ่งส่งคืนค่าเพื่อใช้ในคิวรี
  • ส่งกลับชุดผลลัพธ์ที่มีพารามิเตอร์ (ฟังก์ชันที่มีค่าตาราง)
  • ฝังตรรกะโดยตรงในส่วนSELECTคําสั่ง หรือ WHEREJOIN
  • ตรวจสอบผลลัพธ์ที่กําหนดสําหรับการจัดทําดัชนี (สําหรับชนิดฟังก์ชันเฉพาะ)

เลือกทริกเกอร์เมื่อคุณต้องการ:

  • ตอบสนองต่อเหตุการณ์การแก้ไขข้อมูลโดยอัตโนมัติ
  • บังคับใช้กฎทางธุรกิจที่ซับซ้อนซึ่งขยายเกินกว่าข้อจํากัด
  • รักษาบันทึกการตรวจสอบการเปลี่ยนแปลงข้อมูล
  • ซิงโครไนส์ข้อมูลที่เกี่ยวข้องในตารางต่างๆ โดยอัตโนมัติ

ใช้สถานการณ์การตัดสินใจ

พิจารณาสถานการณ์ทั่วไปเหล่านี้และแนวทางที่แนะนําสําหรับแต่ละสถานการณ์:

สถานการณ์สมมติ วัตถุที่แนะนํา ทําไม
ลดความซับซ้อนของการรวม 5 ตารางที่รายงานหลายรายการใช้ มุมมอง ห่อหุ้มความซับซ้อน ไม่จําเป็นต้องใช้พารามิเตอร์
ประมวลผลคําสั่งซื้อ: ตรวจสอบสต็อก แทรกคําสั่งซื้อ อัปเดตสินค้าคงคลัง กระบวนงานที่เก็บไว้ การแก้ไขหลายรายการในธุรกรรม
คํานวณค่าจัดส่งตามน้ําหนักและปลายทาง ฟังก์ชันสเกลาร์ การคํานวณที่นํากลับมาใช้ใหม่ได้ในคิวรี
ส่งคืนคําสั่งซื้อทั้งหมดให้กับลูกค้าภายในช่วงวันที่ ฟังก์ชันค่าตาราง ชุดผลลัพธ์ที่มีพารามิเตอร์สามารถใช้งานได้ใน JOIN
บันทึกการเปลี่ยนแปลง Salary ทั้งหมดในคอลัมน์ ทริกเกอร์ เส้นทางการตรวจสอบอัตโนมัติและโปร่งใส
ให้การเข้าถึงข้อมูลพนักงานแบบอ่านอย่างเดียวโดยไม่ต้องใช้ SSN มุมมอง เลเยอร์ความปลอดภัยที่ซ่อนคอลัมน์ที่ละเอียดอ่อน

หลีกเลี่ยงข้อผิดพลาดทั่วไป

เมื่อเลือกวัตถุที่สามารถตั้งโปรแกรมได้ ให้ระวังข้อผิดพลาดเหล่านี้:

  • การใช้ฟังก์ชันสเกลาร์ในส่วน WHERE คําสั่งบนตารางขนาดใหญ่— ฟังก์ชันจะทํางานสําหรับทุกแถว ซึ่งทําให้ประสิทธิภาพลดลง พิจารณาฟังก์ชันที่มีค่าตารางแบบอินไลน์หรือการเขียนตรรกะใหม่

  • การสร้างทริกเกอร์สําหรับตรรกะที่กระบวนงานที่เก็บไว้จัดการได้ดีกว่า - ทริกเกอร์จะดําเนินการโดยปริยายและอาจแก้ไขข้อบกพร่องได้ยาก ใช้เฉพาะเมื่อจําเป็นต้องดําเนินการอัตโนมัติเท่านั้น

  • การสร้างมุมมองที่ซับซ้อนซึ่งซ้อนมุมมองอื่น ๆ — มุมมองที่ซ้อนกันอย่างลึกจะปรับให้เหมาะสมและบํารุงรักษาได้ยาก ให้คําจํากัดความของมุมมองโฟกัสและตื้น

  • การเลือกกระบวนงานที่เก็บไว้เมื่อฟังก์ชันจะรวมได้ดีกว่า - ถ้าคุณต้องการผลลัพธ์ใน SELECT คําสั่ง ฟังก์ชันจะให้ไวยากรณ์ที่สะอาดกว่า EXEC ตารางชั่วคราว

ด้วยความเข้าใจเกี่ยวกับจุดแข็งและการแลกเปลี่ยนของวัตถุความสามารถในการตั้งโปรแกรมแต่ละรายการ คุณสามารถเลือกเครื่องมือที่เหมาะสมสําหรับงานออกแบบและการใช้งานฐานข้อมูลของคุณได้