เลือกเวลาที่จะใช้แต่ละตัวเลือก
วัตถุความสามารถในการเขียนโปรแกรมของ SQL Server มีวิธีต่างๆ ในการห่อหุ้มและนําตรรกะกลับมาใช้ใหม่ในฐานข้อมูลของคุณ วัตถุแต่ละชนิด ได้แก่ มุมมองกระบวนงานที่เก็บไว้ฟังก์ชัน และ ทริกเกอร์ มีจุดประสงค์ที่แตกต่างกันและมีความสามารถเฉพาะตัว
เปรียบเทียบตัวเลือก
ตารางต่อไปนี้สรุปความสามารถหลักและข้อจํากัดของวัตถุแต่ละชนิด:
| ความสามารถ | Views | กระบวนงานที่เก็บไว้ | Functions | ทริกเกอร์ |
|---|---|---|---|---|
| ยอมรับพารามิเตอร์ | ไม่ | ใช่ | ใช่ | ไม่ |
| แก้ไขข้อมูล | จำกัด | ใช่ | ไม่ | ใช่ |
| ส่งกลับชุดผลลัพธ์ | ใช่ | ใช่ | มี (TVF) | ไม่ |
ใช้ใน SELECT/JOIN |
ใช่ | ไม่ | ใช่ | ไม่ |
| การควบคุมธุรกรรม | ไม่ | ใช่ | ไม่ | ใช่ |
| การดําเนินการอัตโนมัติ | ไม่ | ไม่ | ไม่ | ใช่ |
| การแคชแผนการดําเนินการ | ไม่ | ใช่ | แตก ต่าง กัน | ใช่ |
มุมมองสามารถปรับเปลี่ยนข้อมูลได้ก็ต่อเมื่อการเปลี่ยนแปลงมีผลต่อตารางฐานเดียวเท่านั้น ฟังก์ชันที่มีค่าตารางแบบอินไลน์ได้รับประโยชน์จากการแคชแผน เนื่องจากเครื่องมือเพิ่มประสิทธิภาพจะขยายฟังก์ชันเหล่านี้ลงในแผนคิวรีโดยตรง TVF แบบหลายคําสั่งและฟังก์ชันสเกลาร์ถือเป็น "กล่องดํา" ซึ่งเครื่องมือเพิ่มประสิทธิภาพไม่สามารถมองเห็นภายในได้ ซึ่งมักจะนําไปสู่การประมาณแถวที่ไม่ถูกต้องและแผนที่ไม่เหมาะสม
เลือกตามความต้องการของคุณ
ออบเจ็กต์ความสามารถในการเขียนโปรแกรมที่เหมาะสมขึ้นอยู่กับสิ่งที่คุณต้องทําให้สําเร็จ ใช้กรอบการตัดสินใจนี้เพื่อเป็นแนวทางในการเลือกของคุณ:
เลือกมุมมองเมื่อคุณต้องการ:
- ลดความซับซ้อนในการเข้าถึงการรวมที่ซับซ้อนหรือข้อมูลที่กรองโดยทั่วไป
- จัดเตรียมชั้นความปลอดภัยโดยการควบคุมการมองเห็นคอลัมน์และแถว
- สร้างอินเทอร์เฟซที่เสถียรสําหรับตารางพื้นฐานที่อาจเปลี่ยนแปลง
- นําเสนอข้อมูลโดยไม่ต้องยอมรับพารามิเตอร์หรือแก้ไขค่า
เลือกกระบวนงานที่เก็บไว้เมื่อคุณต้องการ:
- ดําเนินการตรรกะทางธุรกิจที่ซับซ้อนด้วยคําสั่งหลายคําสั่ง
- แก้ไขข้อมูลในหลายตารางในธุรกรรมเดียว
- ยอมรับพารามิเตอร์อินพุตและส่งคืนพารามิเตอร์เอาต์พุตหรือชุดผลลัพธ์
- ใช้การจัดการข้อผิดพลาดและการควบคุมธุรกรรม
เลือกฟังก์ชันเมื่อคุณต้องการ:
- ทําการคํานวณที่นํากลับมาใช้ใหม่ได้ซึ่งส่งคืนค่าเพื่อใช้ในคิวรี
- ส่งกลับชุดผลลัพธ์ที่มีพารามิเตอร์ (ฟังก์ชันที่มีค่าตาราง)
- ฝังตรรกะโดยตรงในส่วน
SELECTคําสั่ง หรือWHEREJOIN - ตรวจสอบผลลัพธ์ที่กําหนดสําหรับการจัดทําดัชนี (สําหรับชนิดฟังก์ชันเฉพาะ)
เลือกทริกเกอร์เมื่อคุณต้องการ:
- ตอบสนองต่อเหตุการณ์การแก้ไขข้อมูลโดยอัตโนมัติ
- บังคับใช้กฎทางธุรกิจที่ซับซ้อนซึ่งขยายเกินกว่าข้อจํากัด
- รักษาบันทึกการตรวจสอบการเปลี่ยนแปลงข้อมูล
- ซิงโครไนส์ข้อมูลที่เกี่ยวข้องในตารางต่างๆ โดยอัตโนมัติ
ใช้สถานการณ์การตัดสินใจ
พิจารณาสถานการณ์ทั่วไปเหล่านี้และแนวทางที่แนะนําสําหรับแต่ละสถานการณ์:
| สถานการณ์สมมติ | วัตถุที่แนะนํา | ทําไม |
|---|---|---|
| ลดความซับซ้อนของการรวม 5 ตารางที่รายงานหลายรายการใช้ | มุมมอง | ห่อหุ้มความซับซ้อน ไม่จําเป็นต้องใช้พารามิเตอร์ |
| ประมวลผลคําสั่งซื้อ: ตรวจสอบสต็อก แทรกคําสั่งซื้อ อัปเดตสินค้าคงคลัง | กระบวนงานที่เก็บไว้ | การแก้ไขหลายรายการในธุรกรรม |
| คํานวณค่าจัดส่งตามน้ําหนักและปลายทาง | ฟังก์ชันสเกลาร์ | การคํานวณที่นํากลับมาใช้ใหม่ได้ในคิวรี |
| ส่งคืนคําสั่งซื้อทั้งหมดให้กับลูกค้าภายในช่วงวันที่ | ฟังก์ชันค่าตาราง | ชุดผลลัพธ์ที่มีพารามิเตอร์สามารถใช้งานได้ใน JOIN |
บันทึกการเปลี่ยนแปลง Salary ทั้งหมดในคอลัมน์ |
ทริกเกอร์ | เส้นทางการตรวจสอบอัตโนมัติและโปร่งใส |
| ให้การเข้าถึงข้อมูลพนักงานแบบอ่านอย่างเดียวโดยไม่ต้องใช้ SSN | มุมมอง | เลเยอร์ความปลอดภัยที่ซ่อนคอลัมน์ที่ละเอียดอ่อน |
หลีกเลี่ยงข้อผิดพลาดทั่วไป
เมื่อเลือกวัตถุที่สามารถตั้งโปรแกรมได้ ให้ระวังข้อผิดพลาดเหล่านี้:
การใช้ฟังก์ชันสเกลาร์ในส่วน
WHEREคําสั่งบนตารางขนาดใหญ่— ฟังก์ชันจะทํางานสําหรับทุกแถว ซึ่งทําให้ประสิทธิภาพลดลง พิจารณาฟังก์ชันที่มีค่าตารางแบบอินไลน์หรือการเขียนตรรกะใหม่การสร้างทริกเกอร์สําหรับตรรกะที่กระบวนงานที่เก็บไว้จัดการได้ดีกว่า - ทริกเกอร์จะดําเนินการโดยปริยายและอาจแก้ไขข้อบกพร่องได้ยาก ใช้เฉพาะเมื่อจําเป็นต้องดําเนินการอัตโนมัติเท่านั้น
การสร้างมุมมองที่ซับซ้อนซึ่งซ้อนมุมมองอื่น ๆ — มุมมองที่ซ้อนกันอย่างลึกจะปรับให้เหมาะสมและบํารุงรักษาได้ยาก ให้คําจํากัดความของมุมมองโฟกัสและตื้น
การเลือกกระบวนงานที่เก็บไว้เมื่อฟังก์ชันจะรวมได้ดีกว่า - ถ้าคุณต้องการผลลัพธ์ใน
SELECTคําสั่ง ฟังก์ชันจะให้ไวยากรณ์ที่สะอาดกว่าEXECตารางชั่วคราว
ด้วยความเข้าใจเกี่ยวกับจุดแข็งและการแลกเปลี่ยนของวัตถุความสามารถในการตั้งโปรแกรมแต่ละรายการ คุณสามารถเลือกเครื่องมือที่เหมาะสมสําหรับงานออกแบบและการใช้งานฐานข้อมูลของคุณได้