5
เป็นวิธีที่เร็วที่สุดในการแปลง ints 1: 1 เป็นเลขฐานสองแบบ null ได้คืออะไร?
ส่วนหนึ่งของภาระงานของฉันใช้ฟังก์ชั่น CLR ที่ใช้อัลกอริทึมแฮชที่น่ากลัวเพื่อเปรียบเทียบแถวเพื่อดูว่ามีการเปลี่ยนแปลงค่าคอลัมน์ใด ๆ หรือไม่ ฟังก์ชั่น CLR รับสตริงไบนารีเป็นอินพุตดังนั้นฉันต้องการวิธีที่รวดเร็วในการแปลงแถวเป็นสตริงไบนารี ฉันคาดว่าจะแฮชประมาณ 10 พันล้านแถวในระหว่างการทำงานเต็มรูปแบบดังนั้นฉันต้องการรหัสนี้ให้เร็วที่สุด ฉันมีตารางประมาณ 300 ตารางที่มีสกีมาแตกต่างกัน สำหรับจุดประสงค์ของคำถามนี้โปรดสมมติโครงสร้างตารางอย่างง่ายที่มีค่าเป็น 32 INTคอลัมน์ ฉันได้ให้ข้อมูลตัวอย่างรวมถึงวิธีการเปรียบเทียบผลลัพธ์ที่ด้านล่างของคำถามนี้ แถวต้องถูกแปลงเป็นสตริงไบนารีเดียวกันหากค่าคอลัมน์ทั้งหมดเหมือนกัน แถวต้องถูกแปลงเป็นสตริงไบนารีที่แตกต่างกันหากค่าคอลัมน์ใด ๆ แตกต่างกัน ตัวอย่างเช่นรหัสง่าย ๆ ดังต่อไปนี้จะไม่ทำงาน: CAST(COL1 AS BINARY(4)) + CAST(COL2 AS BINARY(4)) + .. มันไม่จัดการ NULL อย่างถูกต้อง ถ้าCOL1เป็น NULL สำหรับแถวที่ 1 และCOL2เป็น NULL สำหรับแถวที่ 2 ดังนั้นทั้งสองแถวจะถูกแปลงเป็นสตริง NULL ฉันเชื่อว่าการจัดการ NULL ที่ถูกต้องเป็นส่วนที่ยากที่สุดในการแปลงทั้งแถวอย่างถูกต้อง …