นี่คือ 3 อันดับแรกของฉัน
หมายเลข 1 ความล้มเหลวในการระบุรายการเขตข้อมูล (แก้ไข: เพื่อป้องกันความสับสน: นี่เป็นกฎรหัสการผลิตมันไม่ได้ใช้กับสคริปต์การวิเคราะห์แบบใช้ครั้งเดียว - ยกเว้นว่าฉันเป็นผู้เขียน)
SELECT *
Insert Into blah SELECT *
ควรจะเป็น
SELECT fieldlist
Insert Into blah (fieldlist) SELECT fieldlist
หมายเลข 2 การใช้เคอร์เซอร์และ while loop เมื่อ a ขณะที่ loop กับตัวแปร loop จะทำ
DECLARE @LoopVar int
SET @LoopVar = (SELECT MIN(TheKey) FROM TheTable)
WHILE @LoopVar is not null
BEGIN
-- Do Stuff with current value of @LoopVar
...
--Ok, done, now get the next value
SET @LoopVar = (SELECT MIN(TheKey) FROM TheTable
WHERE @LoopVar < TheKey)
END
หมายเลข 3 DateLogic ผ่านชนิดสตริง
--Trim the time
Convert(Convert(theDate, varchar(10), 121), datetime)
ควรจะเป็น
--Trim the time
DateAdd(dd, DateDiff(dd, 0, theDate), 0)
ฉันเคยเห็น "ล่าสุดหนึ่งคำค้นหาดีกว่าสองคำ,
SELECT *
FROM blah
WHERE (blah.Name = @name OR @name is null)
AND (blah.Purpose = @Purpose OR @Purpose is null)
แบบสอบถามนี้ต้องการแผนการดำเนินการที่แตกต่างกันสองหรือสามแผนขึ้นอยู่กับค่าของพารามิเตอร์ สร้างแผนการดำเนินการเพียงแผนเดียวและติดอยู่ในแคชสำหรับข้อความ sql นี้ แผนนั้นจะถูกนำมาใช้โดยไม่คำนึงถึงมูลค่าของพารามิเตอร์ ส่งผลให้ประสิทธิภาพไม่ดีเป็นระยะ ๆ มันเป็นการดียิ่งกว่าที่จะเขียนสองแบบสอบถาม (หนึ่งแบบสอบถามต่อแผนการดำเนินการที่ตั้งใจ)