4
ยังผิดไหมที่จะเริ่มต้นชื่อผู้ใช้ที่จัดเก็บโพรซีเดอร์ด้วย sp_?
หนึ่งในเพื่อนร่วมงานของฉันตั้งชื่อกระบวนงานที่เก็บไว้ในฐานข้อมูล SQL Server 2008 R2 ของsp_somethingเรา เมื่อฉันเห็นสิ่งนี้ฉันก็คิดทันที: "นั่นมันผิด!" และเริ่มค้นหาบุ๊กมาร์กของฉันสำหรับบทความออนไลน์นี้ซึ่งอธิบายว่าทำไมมันผิดดังนั้นฉันจึงสามารถให้คำอธิบายแก่เพื่อนร่วมงานของฉันได้ ในบทความ (โดยBrian Moran ) มีการอธิบายว่าการให้ขั้นตอนการจัดเก็บคำนำหน้าsp_ทำให้ SQL Server ดูที่ฐานข้อมูลหลักสำหรับแผนรวบรวม เนื่องจากsp_sprocไม่ได้อยู่ที่นั่น SQL Server จะคอมไพล์โพรเซสอีกครั้ง ตัวอย่างต่อไปนี้ให้ไว้ในบทความเพื่อแสดงความแตกต่างระหว่างสองขั้นตอน: USE tempdb; GO CREATE PROCEDURE dbo.Select1 AS SELECT 1; GO CREATE PROCEDURE dbo.sp_Select1 AS SELECT 1; GO EXEC dbo.sp_Select1; GO EXEC dbo.Select1; GO คุณรันสิ่งนี้จากนั้นเปิด Profiler (เพิ่มกระบวนงานที่เก็บไว้ -> SP:CacheMissเหตุการณ์) …