# มี CTE เยอะ ๆ เสมือนเรา import ไม่ได้กระทบ performance บน data warehouse นะ

**URL:** <https://discuss.dataengineercafe.io/t/cte-import-performance-data-warehouse/376>\
**Category:** General Discussion เรื่อง Data Engineering\
**Tags:** sql, dbt, data-warehouse, cte\
**Created:** [August 15, 2022, 12:32am UTC](https://discuss.dataengineercafe.io/t/cte-import-performance-data-warehouse/376 "2022-08-15T00:32:08Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![zkan](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/zkan/32/2_2.png) [@zkan](https://discuss.dataengineercafe.io/u/zkan)\
**Post date:** [August 15, 2022, 12:32am UTC](https://discuss.dataengineercafe.io/t/cte-import-performance-data-warehouse/376/1 "2022-08-15T00:32:08Z")

</div>

เวลาเขียนโค้ด SQL ใน dbt เค้าจะใช้ CTE เสมือนกับว่าเรา import module เข้ามาใช้งาน ทีนี้มีคำถามว่าถ้าเรามี CTE เยอะ ๆ เนี่ย ในส่วน import มันจะกระทบกับ performance ไหม [Tristan Handy](https://twitter.com/jthandy) ผู้สร้าง dbt เค้าเลยทดลองเอา query มารันบนพวก modern data warehouse อย่าง Redshift, BigQuery และ Snowflake

> **[CTEs are Passthroughs--Some research!](https://discourse.getdbt.com/t/ctes-are-passthroughs-some-research/155)**
>
> Hi all! I recently did some research on a question that comes up when I talk to people about SQL and optimizers. At Fishtown Analytics, we have a style guide for how we write SQL. Part of that style guide is using CTEs as though they’re import...

ผลออกมาคือมันเป็นแค่ passthroughs ซึ่งก็หมายความว่าไม่ได้กระทบกับ performance แต่อย่างใด พวก data warehouse พวกนี้เค้า optimize ให้เราไปแล้วเรียบร้อยล่ะ 👍

ปล. แอบตกใจเล็กน้อย เพราะว่าโพสต์ของ Tristan นี่ตั้งแต่ปี 2018… 😅

---

<div class="post-metadata">

**Author:** ![kahnwong](https://yyz1.discourse-cdn.com/flex035/user_avatar/discuss.dataengineercafe.io/kahnwong/32/295_2.png) [@kahnwong](https://discuss.dataengineercafe.io/u/kahnwong)\
**Post date:** [August 15, 2022, 5:29am UTC](https://discuss.dataengineercafe.io/t/cte-import-performance-data-warehouse/376/2 "2022-08-15T05:29:45Z")

</div>

จริงๆ อันนี้ก็พูดยาก เพราะพอเราใช้ sql บน cloud data warehouse มันจะไป translate หลังบ้านเอาให้เอง

แต่มันก็ไม่ได้ optimize ให้ทุกจุด เพราะงั้นถ้าเล่นกะดาต้าใหญ่มากๆ แล้ว query มีความซับซ้อน spark อาจจะเหมาะกว่า เพราะมันเล่นแร่แปรธาตุเองได้

เท่าที่สังเกต ส่วนใหญ่ถ้าใช้ spark กันคือจะมีการทำ machine learning อยู่แล้ว ต่อยอดมาจากการใช้ pandas ก็เลยอาจจะไม่มีความจำเป็นต้องใช้ sql interface

แต่เขาก็พูดกันอยู่ ว่า อย่าไปเสียเวลา optimize มาก เพราะปัจจุบัน compute มันถูกลงเยอะแล้ว ก็คงต้องชั่งกันดีๆ ว่า เราให้ความสำคัญกับอะไรมากกว่ากัน 😅

edit: fix typo
