ฉันอ่านหนังสือเล่มนี้จบใน 20 หน้า เดิมทีฉันคิดว่าธีมของหนังสือเล่มนี้คือการอธิบาย t-sql ใน sql server 2005 แต่หลังจากอ่านแล้วฉันพบว่าไม่ใช่ ไม่มีคำอธิบายที่เป็นระบบของ t-sql ในหนังสือเล่มนี้ สามบทแรกพูดถึงหลักการของการสืบค้น และหกบทถัดไปจะแยกปัญหา SQL ทั่วไปออกเป็นหมวดหมู่เดียวสำหรับแต่ละบท: บทที่ 4 แบบสอบถามย่อย, นิพจน์ตารางและฟังก์ชันการจัดอันดับ, บทที่ 5 เข้าร่วมและตั้งค่าการดำเนินการ, การรวมและการหมุนบทที่ 6 data บทที่ 7 TOP และ ALLPY บทที่ 8 การปรับเปลี่ยนข้อมูล บทที่ 9 กราฟ ต้นไม้ ลำดับชั้น และการสืบค้นแบบเรียกซ้ำ
ผู้เขียนกล่าวไว้ในคำนำว่า หากคุณอ่านหนังสือเล่มนี้อย่างละเอียดและใช้เวลาทำแบบฝึกหัดในหนังสือ คุณจะเชี่ยวชาญประสบการณ์ที่ผู้เขียนสั่งสมมามากกว่าสิบปีได้ในระยะเวลาอันสั้น ฉันได้อ่านหนังสือเล่มนี้และอ่านโค้ดในหนังสือโดยพื้นฐานแล้ว ฉันรู้สึกว่าฉันได้เรียนรู้อะไรมากมายจากประสบการณ์ของผู้เขียน และผู้เขียนก็มีประสบการณ์มาก โซลูชันมากมายไม่เพียงแต่แสดงทักษะของผู้เขียนใน SQL เท่านั้น แต่อัลกอริธึมก็คุ้มค่าที่จะเรียนรู้เช่นกัน นอกจากนี้ มีคำถามมากมายที่ให้วิธีแก้ปัญหาสำหรับ sql server 2000 และวิธีแก้ปัญหาสำหรับ sql server 2005 นี่คือสองตัวอย่าง:
1. สร้างตารางข้อมูลอย่างรวดเร็วด้วยคอลัมน์เดียว ค่าของคอลัมน์นี้อยู่ในช่วงตั้งแต่ 1 ถึง 8000 sql จะต้องดำเนินการเพียง 14 ครั้ง (sql แรกแทรกข้อมูล 1 และ 12 ครั้งถัดไปจะแทรกข้อมูลภายใน 2 ยกกำลัง ของ 12 4096 และตัวเลข 8000-4096 ที่เหลือต่อไปนี้จะถูกสร้างขึ้นพร้อมกัน) แทนที่จะเป็น 8000 ครั้ง:
ตั้งหมายเลขบน;
ใช้ tempdb;
ไป
หาก OBJECT_ID('dbo.Nums') ไม่เป็นโมฆะ
วางตาราง dbo.Nums;
ไป
สร้างตาราง dbo.Nums (n INT ไม่ใช่คีย์หลักที่เป็นโมฆะ);
ประกาศ @max AS INT, @rc AS INT;
SET @สูงสุด = 8000;
SET @rc = 1;
แทรกลงในค่าตัวเลข (1);
ในขณะที่ @rc * 2 <= @max
เริ่ม
แทรกลงใน dbo.Nums เลือก n + @rc จาก dbo.Nums;
SET @rc = @rc * 2;
จบ
ใส่เข้าไปใน dbo.Nums
เลือก n + @rc จาก dbo.Nums โดยที่ n + @rc <= @max;
ไป
2. สำหรับตารางที่มีโครงสร้างแบบเรียกซ้ำ ผู้เขียนแนะนำวิธีการออกแบบทั่วไป (การเรียกซ้ำ) และยังแนะนำโมเดลการรวบรวมแบบซ้อนที่เสนอโดย Joe Celko และให้วิธีการดำเนินการที่รวดเร็วยิ่งขึ้นของเขาเอง โมเดลนี้ตั้งค่าสองค่าในแต่ละโหนดของตัวเลข: lvalue และ rvalue ค่าด้านซ้ายน้อยกว่าค่าด้านซ้ายของโหนดย่อยทั้งหมด และค่าด้านขวาจะมากกว่าค่าด้านขวาของโหนดย่อยทั้งหมด การคำนวณขั้นสุดท้ายของความสัมพันธ์แบบเรียกซ้ำนั้นรวดเร็วมาก แน่นอนว่าการเปลี่ยนแปลงโหนดในโมเดลนี้จะทำให้โหนดโดยเฉลี่ยครึ่งหนึ่งต้องคำนวณค่าซ้ายและขวาใหม่ จึงไม่เหมาะสำหรับตารางข้อมูลที่ต้องมีการเปลี่ยนแปลงแบบเรียลไทม์บ่อยครั้ง SQL เฉพาะนั้นค่อนข้างยาว หากคุณสนใจ คุณสามารถอ่านหนังสือหรือดาวน์โหลดซอร์สโค้ดของหนังสือเล่มนี้ได้