6
อะไรคือวิธีที่แตกต่างในการแทนที่ ISNULL () ในส่วนคำสั่ง WHERE ที่ใช้เฉพาะค่าตัวอักษร?
สิ่งนี้ไม่เกี่ยวกับ: นี่ไม่ใช่คำถามเกี่ยวกับการสืบค้นทั้งหมดที่ยอมรับอินพุตของผู้ใช้หรือใช้ตัวแปร นี่เป็นเรื่องเกี่ยวกับเคียวรีที่ISNULL()ใช้ในส่วนWHEREคำสั่งเพื่อแทนที่NULLค่าด้วยค่า canary เพื่อเปรียบเทียบกับเพรดิเคตและวิธีต่างๆในการเขียนเคียวรีเหล่านั้นใหม่เพื่อให้SARGableใน SQL Server ทำไมคุณไม่มีที่นั่งตรงนั้นล่ะ? แบบสอบถามตัวอย่างของเราขัดต่อสำเนาโลคัลของฐานข้อมูล Stack Overflow บน SQL Server 2016 และค้นหาผู้ใช้ที่NULLมีอายุหรืออายุ <18 SELECT COUNT(*) FROM dbo.Users AS u WHERE ISNULL(u.Age, 17) < 18; แผนคิวรีแสดงการสแกนของดัชนีที่ไม่ได้จัดกลุ่มอย่างรอบคอบ ตัวดำเนินการสแกนแสดง (ขอบคุณส่วนเพิ่มเติมของ XML แผนการดำเนินการจริงใน SQL Server รุ่นล่าสุด) ที่เราอ่านทุกแถวของ stinkin โดยรวมแล้วเราอ่าน 9157 ครั้งและใช้เวลา CPU ประมาณครึ่งวินาที: Table 'Users'. Scan count 1, logical reads …
55
sql-server