เมื่อเร็ว ๆ นี้ฉันได้ยินมามากแล้วว่า SQL เป็นภาษาที่แย่มากและดูเหมือนว่าทุกเฟรมเวิร์กภายใต้ดวงอาทิตย์จะมาพร้อมกับเลเยอร์นามธรรมของฐานข้อมูล
SQL
โปรดทราบว่าชั้นเหล่านี้เพียงแค่แปลงสิ่งที่ตัวเองของพวกเขาเป็น สำหรับผู้ขายฐานข้อมูลส่วนใหญ่SQL
เป็นวิธีเดียวในการสื่อสารกับเครื่องยนต์
จากประสบการณ์ของฉัน SQL มักจะเป็นวิธีที่ง่ายกว่าหลากหลายกว่าและเป็นมิตรกับโปรแกรมเมอร์มากกว่าในการจัดการอินพุตและเอาต์พุตข้อมูล ทุกชั้นนามธรรมที่ฉันเคยใช้ดูเหมือนจะเป็นแนวทางที่ จำกัด อย่างเห็นได้ชัดโดยไม่มีประโยชน์ที่แท้จริง
…เหตุผลที่ฉันเพิ่งอธิบายไปข้างต้น
ชั้นฐานข้อมูลไม่ได้เพิ่มอะไรเลยเพียง แต่จำกัดคุณ ทำให้การสืบค้นง่ายขึ้นอย่างไม่น่าเชื่อ แต่ไม่มีประสิทธิภาพมากขึ้น
SQL
ตามคำนิยามมีอะไรในชั้นฐานข้อมูลที่ไม่ได้อยู่ใน
อะไรทำให้SQL
แย่มากและทำไมเลเยอร์นามธรรมของฐานข้อมูลจึงมีค่า
SQL
เป็นภาษาที่ดี แต่ต้องใช้สมองในการทำงานกับมัน
ในทางทฤษฎีSQL
มีการประกาศนั่นคือคุณประกาศสิ่งที่คุณต้องการได้รับและเครื่องยนต์จัดเตรียมให้เร็วที่สุดเท่าที่จะเป็นไปได้
ในทางปฏิบัติมีหลายวิธีในการกำหนดแบบสอบถามที่ถูกต้อง (นั่นคือแบบสอบถามที่ให้ผลลัพธ์ที่ถูกต้อง)
เครื่องมือเพิ่มประสิทธิภาพสามารถสร้างปราสาทเลโก้โดยใช้อัลกอริทึมที่กำหนดไว้ล่วงหน้า (ใช่มันมีหลายอย่าง) แต่ไม่สามารถสร้างอัลกอริทึมใหม่ได้ ยังต้องใช้SQL
นักพัฒนาในการช่วยเหลือพวกเขา
อย่างไรก็ตามบางคนคาดว่าเครื่องมือเพิ่มประสิทธิภาพจะสร้าง "แผนการที่ดีที่สุดเท่าที่จะเป็นไปได้" ไม่ใช่ "แผนการที่ดีที่สุดที่มีให้สำหรับข้อความค้นหานี้เมื่อใช้งานSQL
เครื่องยนต์"
และอย่างที่เราทราบกันดีว่าเมื่อโปรแกรมคอมพิวเตอร์ไม่ตรงตามความคาดหวังของผู้คนโปรแกรมนี้จะถูกตำหนิไม่ใช่ตามความคาดหวัง
อย่างไรก็ตามในกรณีส่วนใหญ่การจัดรูปแบบการสืบค้นใหม่สามารถสร้างแผนการที่ดีที่สุดเท่าที่จะเป็นไปได้ อย่างไรก็ตามมีงานที่ทำไม่ได้ด้วยการปรับปรุงใหม่และเพิ่มขึ้นสำหรับSQL
กรณีเหล่านี้จะมีจำนวนน้อยลงเรื่อย ๆ
จะเป็นการดีหากผู้ขายให้การเข้าถึงฟังก์ชันระดับต่ำบางอย่างเช่น "รับช่วงดัชนี" "รับแถวโดยrowid
" ฯลฯ เช่นเดียวกับC
คอมไพเลอร์ให้คุณฝังแอสเซมบลีลงในภาษาได้ทันที
เมื่อเร็ว ๆ นี้ฉันเขียนบทความเกี่ยวกับเรื่องนี้ในบล็อกของฉัน: