ภาพโดยผู้เขียน
ในโลกของข้อมูล SQL ยังคงเป็นภาษากลางสำหรับการโต้ตอบกับฐานข้อมูล
ทุกวันนี้ภาษานี้ถือเป็นภาษาที่ใช้กันมากที่สุดภาษาหนึ่งในการจัดการกับข้อมูล และยังถือว่าเป็นสิ่งจำเป็นสำหรับผู้เชี่ยวชาญด้านข้อมูลที่ดี
อย่างไรก็ตาม ใครก็ตามที่เคยทำงานกับคำสั่ง SQL ที่ซับซ้อนจะรู้ว่าพวกเขาสามารถกลายเป็นสัตว์ร้ายได้อย่างรวดเร็ว ซึ่งยากต่อการอ่าน บำรุงรักษา หรือนำมาใช้ซ้ำ
นี่คือสาเหตุว่าทำไมทุกวันนี้การรู้ SQL ยังไม่เพียงพอ เราต้องเก่งในการสร้างคิวรีด้วย และนี่คืองานศิลปะประเภทหนึ่งจริงๆ
นี่คือจุดที่ Common Table Expressions (CTE) เข้ามามีบทบาท โดยเปลี่ยนศิลปะของการเขียนแบบสอบถามให้เป็นงานฝีมือที่มีโครงสร้างและเข้าถึงได้มากขึ้น
ดังนั้น เรามาค้นพบวิธีเขียนโค้ดข้อความค้นหาที่อ่านได้และนำกลับมาใช้ใหม่ด้วยกัน
หากคุณสงสัยว่า CTE คืออะไร คุณมาถูกที่แล้ว
Common Table Expression (CTE) คือชุดผลลัพธ์ชั่วคราวที่กำหนดไว้ภายในขอบเขตการดำเนินการของคำสั่ง SQL เดียว
เป็นตารางชั่วคราวที่สามารถอ้างอิงได้หลายครั้งภายในแบบสอบถามเดียว และโดยทั่วไปจะใช้เพื่อลดความซับซ้อนของการรวมและแบบสอบถามย่อยที่ซับซ้อน โดยมีเป้าหมายสูงสุดในการเพิ่มความสามารถในการอ่านและการจัดระเบียบของโค้ด SQL
ดังนั้นจึงเป็นเครื่องมือที่มีประสิทธิภาพในการแบ่งแบบสอบถามที่ซับซ้อนออกเป็นส่วนที่เรียบง่าย
นี่คือเหตุผลที่คุณควรพิจารณาใช้ CTE:
- modularity: คุณสามารถแยกตรรกะที่ซับซ้อนออกเป็นส่วนๆ ที่อ่านได้
- การอ่าน: ช่วยให้เข้าใจขั้นตอนของการสืบค้น SQL ได้ง่ายขึ้น
- การนำกลับมาใช้ใหม่: CTE สามารถอ้างอิงได้หลายครั้งในการสืบค้นครั้งเดียว เพื่อหลีกเลี่ยงการซ้ำซ้อน
ความมหัศจรรย์เริ่มต้นด้วยคำสั่งย่อย WITH ซึ่งนำหน้าแบบสอบถามหลักของคุณและกำหนดตารางชั่วคราว (CTE) ที่แตกต่างกันด้วยนามแฝง
ดังนั้นเราจึงจำเป็นต้องเริ่มการสืบค้นด้วยคำสั่ง “WITH” เพื่อเริ่มกำหนด CTE ของตัวเอง เมื่อใช้ CTE เราสามารถแบ่งการสืบค้น SQL ที่ซับซ้อนออกเป็น:
– ตารางชั่วคราวขนาดเล็กที่คำนวณตัวแปรที่เกี่ยวข้อง
– ตารางสุดท้ายที่รับเฉพาะตัวแปรที่เราต้องการเป็นเอาต์พุต
และนี่คือแนวทาง MODULAR ที่เราต้องการในโค้ดใดๆ ก็ตาม!
ภาพโดยผู้เขียน
ดังนั้นการใช้ CTE ในการสืบค้นของเราช่วยให้เราสามารถ:
– ดำเนินการตารางชั่วคราวหนึ่งครั้งและอ้างอิงหลาย ๆ ครั้ง
– ปรับปรุงความสามารถในการอ่านและลดความซับซ้อนของตรรกะ
– ส่งเสริมการใช้รหัสซ้ำและการออกแบบโมดูลาร์
เพื่อให้เข้าใจสิ่งนี้ได้ดีขึ้น เราจึงนำตัวอย่างที่พัก Airbnb ในบาร์เซโลนามาใช้ได้จริง
ลองจินตนาการว่าเราต้องการวิเคราะห์ประสิทธิภาพของที่พักตามพื้นที่ใกล้เคียง และเปรียบเทียบกับประสิทธิภาพโดยรวมของเมือง คุณจะต้องรวบรวมข้อมูลเกี่ยวกับละแวกใกล้เคียง อพาร์ตเมนต์แต่ละห้อง เจ้าของที่พัก และราคาเข้าด้วยกัน
เพื่อเป็นตัวอย่าง เราจะใช้ อินไซด์แอร์บีแอนด์บี ตารางของบาร์เซโลนาซึ่งมีลักษณะดังนี้:
แนวทางที่ไร้เดียงสาอาจทำให้คุณสร้างแบบสอบถามย่อยแบบซ้อนซึ่งกลายเป็นฝันร้ายในการบำรุงรักษาอย่างรวดเร็ว ดังต่อไปนี้:
รหัสโดยผู้เขียน
แต่เราสามารถใช้ CTE เพื่อแบ่งการสืบค้นของเราออกเป็นส่วนเชิงตรรกะ โดยแต่ละส่วนจะกำหนดชิ้นส่วนของปริศนา
- ข้อมูลพื้นที่ใกล้เคียง: สร้าง CTE เพื่อสรุปข้อมูลตามพื้นที่ใกล้เคียง
- ข้อมูลอพาร์ตเมนต์และโฮสต์: กำหนด CTE เพื่อดูรายละเอียดเกี่ยวกับอพาร์ทเมนท์และเจ้าของที่พัก
- ตัวชี้วัดทั่วทั้งเมือง: CTE อื่นเพื่อรวบรวมสถิติระดับเมืองเพื่อการเปรียบเทียบ
- การประกอบขั้นสุดท้าย: รวม CTE ไว้ในคำสั่ง SELECT สุดท้ายเพื่อนำเสนอข้อมูลอย่างสอดคล้องกัน
ภาพโดยผู้เขียน
และเราจะจบลงด้วยคำถามต่อไปนี้:
รหัสโดยผู้เขียน
ด้วยการใช้ CTE เราจะเปลี่ยนการสืบค้นเดี่ยวที่อาจเป็นอันตรายให้เป็นชุดโมดูลข้อมูลที่จัดระเบียบ วิธีการแบบโมดูลาร์นี้ทำให้โค้ด SQL ใช้งานง่ายขึ้นและปรับให้เข้ากับการเปลี่ยนแปลงได้
หากมีข้อกำหนดใหม่เกิดขึ้น คุณสามารถปรับเปลี่ยนหรือเพิ่ม CTE ได้โดยไม่ต้องยกเครื่องการสืบค้นทั้งหมด
เมื่อคุณสร้าง CTE ของคุณแล้ว คุณสามารถนำมาใช้ซ้ำเพื่อทำการวิเคราะห์เปรียบเทียบได้ ตัวอย่างเช่น หากคุณต้องการเปรียบเทียบข้อมูลพื้นที่ใกล้เคียงกับหน่วยวัดทั่วทั้งเมือง คุณสามารถอ้างอิง CTE ของคุณในชุดการดำเนินการ JOIN ได้
สิ่งนี้ไม่เพียงช่วยประหยัดเวลา แต่ยังช่วยให้โค้ดของคุณมีประสิทธิภาพ เนื่องจากคุณไม่จำเป็นต้องค้นหาคำเดิมซ้ำสองครั้ง!
CTE เป็นข้อพิสูจน์ถึงหลักการที่ว่าโครงสร้างเล็กๆ น้อยๆ สามารถช่วยการเขียนโปรแกรมได้ยาวนาน การนำ CTE มาใช้จะทำให้คุณสามารถเขียนคำสั่ง SQL ที่ชัดเจน บำรุงรักษาได้มากขึ้น และนำกลับมาใช้ใหม่ได้
ช่วยเพิ่มความคล่องตัวให้กับกระบวนการพัฒนาคิวรีและทำให้ง่ายต่อการสื่อสารตรรกะการเรียกค้นข้อมูลที่ซับซ้อนกับผู้อื่นได้ง่ายขึ้น
โปรดจำไว้ว่า ครั้งต่อไปที่คุณพบว่าตัวเองกำลังจะเริ่มต้นเขียน multi-join และซ้อนคิวรีย่อย ให้พิจารณาแยกย่อยด้วย CTE
ตัวคุณในอนาคต—และใครก็ตามที่อาจอ่านโค้ดของคุณ—จะขอบคุณ
โจเซป เฟอร์เรอร์ เป็นวิศวกรวิเคราะห์จากบาร์เซโลนา เขาสำเร็จการศึกษาด้านวิศวกรรมฟิสิกส์และกำลังทำงานในสาขาวิทยาศาสตร์ข้อมูลที่ประยุกต์ใช้กับการเคลื่อนที่ของมนุษย์ เขาเป็นผู้สร้างเนื้อหานอกเวลาที่มุ่งเน้นด้านวิทยาศาสตร์ข้อมูลและเทคโนโลยี สามารถติดต่อเขาได้ที่ LinkedIn, Twitter or กลาง.
- เนื้อหาที่ขับเคลื่อนด้วย SEO และการเผยแพร่ประชาสัมพันธ์ รับการขยายวันนี้
- PlatoData.Network Vertical Generative Ai เพิ่มพลังให้กับตัวเอง เข้าถึงได้ที่นี่.
- เพลโตไอสตรีม. Web3 อัจฉริยะ ขยายความรู้ เข้าถึงได้ที่นี่.
- เพลโตESG. คาร์บอน, คลีนเทค, พลังงาน, สิ่งแวดล้อม แสงอาทิตย์, การจัดการของเสีย. เข้าถึงได้ที่นี่.
- เพลโตสุขภาพ เทคโนโลยีชีวภาพและข่าวกรองการทดลองทางคลินิก เข้าถึงได้ที่นี่.
- ที่มา: https://www.kdnuggets.com/sql-simplified-crafting-modular-and-understandable-queries-with-ctes?utm_source=rss&utm_medium=rss&utm_campaign=sql-simplified-crafting-modular-and-understandable-queries-with-ctes
- :มี
- :เป็น
- :ไม่
- :ที่ไหน
- $ ขึ้น
- a
- เกี่ยวกับเรา
- จริง
- เพิ่ม
- ปรับ
- การนำ
- กับ
- Airbnb
- ช่วยให้
- ด้วย
- เสมอ
- an
- การวิเคราะห์
- การวิเคราะห์
- วิเคราะห์
- และ
- อื่น
- ใด
- ทุกคน
- พาร์ทเมนท์
- ประยุกต์
- เข้าใกล้
- เข้าถึงได้
- เป็น
- ศิลปะ
- บทความ
- AS
- การชุมนุม
- At
- หลีกเลี่ยง
- บาร์เซโลนา
- BE
- กลายเป็น
- ดีกว่า
- ทำลาย
- หมดสภาพ
- แต่
- by
- CAN
- การเปลี่ยนแปลง
- ชัดเจนขึ้น
- รหัส
- รวมกัน
- อย่างไร
- ร่วมกัน
- สื่อสาร
- เปรียบเทียบ
- การเปรียบเทียบ
- ซับซ้อน
- คำนวณ
- พิจารณา
- ถือว่า
- ติดต่อเรา
- เนื้อหา
- หัตถกรรม
- สร้าง
- ผู้สร้าง
- ขณะนี้
- ข้อมูล
- วิทยาศาสตร์ข้อมูล
- ฐานข้อมูล
- จัดการ
- กำหนด
- กำหนด
- การกำหนด
- ออกแบบ
- รายละเอียด
- พัฒนาการ
- ต่าง
- ค้นพบ
- ลง
- ง่ายดาย
- ที่มีประสิทธิภาพ
- อื่น
- เริ่มดำเนินการ
- ออกมา
- ปลาย
- วิศวกร
- ชั้นเยี่ยม
- พอ
- ทั้งหมด
- ที่จัดตั้งขึ้น
- ตัวอย่าง
- ดำเนินการ
- การปฏิบัติ
- การแสดงออก
- การแสดงออก
- สนาม
- สุดท้าย
- หา
- ไหล
- มุ่งเน้น
- ดังต่อไปนี้
- ดังต่อไปนี้
- สำหรับ
- ราคาเริ่มต้นที่
- อนาคต
- รวบรวม
- เป้าหมาย
- ไป
- ดี
- มี
- he
- พระองค์
- เจ้าภาพ
- เจ้าภาพ
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- ทำอย่างไร
- ที่ http
- HTTPS
- เป็นมนุษย์
- if
- ปรับปรุง
- in
- ที่เพิ่มขึ้น
- เป็นรายบุคคล
- ข้อมูล
- ตัวอย่าง
- การมีปฏิสัมพันธ์
- เข้าไป
- ใช้งานง่าย
- IT
- ร่วม
- ร่วม
- jpg
- KD นักเก็ต
- ทราบ
- รู้
- ภาษา
- นำ
- กดไลก์
- รายชื่อ
- น้อย
- ตรรกะ
- ตรรกะ
- นาน
- LOOKS
- มายากล
- หลัก
- เก็บรักษา
- บำรุงรักษาได้
- การบำรุงรักษา
- ทำให้
- หลาย
- ตัวชี้วัด
- อาจ
- การเคลื่อนย้าย
- โมดูลาร์
- โมดูล
- ข้อมูลเพิ่มเติม
- มากที่สุด
- หลาย
- ต้องมี
- จำเป็นต้อง
- ใหม่
- ถัดไป
- of
- on
- ครั้งเดียว
- ONE
- เพียง
- การดำเนินการ
- or
- ใบสั่ง
- organizacja
- Organized
- ผลิตภัณฑ์อื่นๆ
- ของเรา
- ออก
- เอาท์พุต
- ทั้งหมด
- ของตนเอง
- ส่วน
- ดำเนินการ
- การปฏิบัติ
- ฟิสิกส์
- ชิ้น
- เพลโต
- เพลโตดาต้าอินเทลลิเจนซ์
- เพลโตดาต้า
- เล่น
- ที่อาจเกิดขึ้น
- ที่มีประสิทธิภาพ
- ประยุกต์
- อย่างแม่นยำ
- นำเสนอ
- การตั้งราคา
- หลัก
- กระบวนการ
- มืออาชีพ
- การเขียนโปรแกรม
- ส่งเสริม
- ปริศนา
- คำสั่ง
- อย่างรวดเร็ว
- อ่าน
- การอ้างอิง
- อ้างอิง
- ที่เกี่ยวข้อง
- ทำซ้ำ
- ความต้องการ
- ผล
- การแก้ไข
- นำมาใช้ใหม่
- นำมาใช้ใหม่
- ขวา
- เดียวกัน
- วิทยาศาสตร์
- วิทยาศาสตร์และเทคโนโลยี
- ขอบเขต
- เลือก
- ชุด
- ชุด
- น่า
- ที่เรียบง่าย
- ที่เรียบง่าย
- ลดความซับซ้อน
- เดียว
- เล็ก
- SQL
- ยืน
- เริ่มต้น
- คำแถลง
- สถิติ
- ยังคง
- ช่วยเพิ่มความคล่องตัว
- โครงสร้าง
- โครงสร้าง
- สรุป
- ตาราง
- เอา
- ใช้เวลา
- เทคโนโลยี
- ชั่วคราว
- จะ
- ขอบคุณ
- ที่
- พื้นที่
- โลก
- พวกเขา
- พวกเขา
- นี้
- เหล่านั้น
- เวลา
- ครั้ง
- ไปยัง
- ในวันนี้
- ร่วมกัน
- เครื่องมือ
- การเปลี่ยนแปลง
- กลับ
- ชนิด
- เป็นปกติ
- ที่สุด
- เข้าใจ
- เข้าใจได้
- ความเข้าใจ
- us
- ใช้
- มือสอง
- การใช้
- นำไปใช้
- ตัวแปร
- ต้องการ
- ทาง..
- we
- อะไร
- ความหมายของ
- ที่
- WHO
- ทำไม
- จะ
- กับ
- ภายใน
- ไม่มี
- สงสัย
- ทำงาน
- การทำงาน
- โลก
- จะ
- เขียน
- การเขียน
- เธอ
- ของคุณ
- ด้วยตัวคุณเอง
- ลมทะเล