# สรุปบทความ Optimize your bigquery performance ของ Sagar Tiwari

**URL:** <https://discuss.dataengineercafe.io/t/optimize-your-bigquery-performance-sagar-tiwari/423>\
**Category:** BigQuery\
**Tags:** bigquery, google, optimization, performance\
**Created:** [October 3, 2022, 1:36pm UTC](https://discuss.dataengineercafe.io/t/optimize-your-bigquery-performance-sagar-tiwari/423 "2022-10-03T13:36:33Z")\
**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:** [October 3, 2022, 1:36pm UTC](https://discuss.dataengineercafe.io/t/optimize-your-bigquery-performance-sagar-tiwari/423/1 "2022-10-03T13:36:33Z")

</div>

บทความนี้เขียนวิธี optimize BigQuery’s performance ไปส่องแล้ว เป็นทิปที่เข้าใจง่ายดี เลยขอมาสรุปให้อ่านกัน 😉

> **[Optimize your bigquery performance.](https://medium.com/@Sagar_Tiwari/optimize-your-bigquery-performance-150394aed479)**
>
> Google BigQuery, like other modern hyper-scale data platforms, has a different architecture to what many data professionals and data…

เค้าเขียนไว้ 5 ข้อตามนี้

1. ถ้าข้อมูลใหญ่มาก ๆ ให้ใช้ `top` แทน `limit` เช่น เราจะเลือก 100 แถวแรกมาแสดงผล

2. BigQuery มี feature ที่หน้า UI คือเวลาที่เราเขียน query เสร็จ มันจะคำนวณมาให้ก่อนว่า query นี้จะไปดึงข้อมูลมาประมาณขนาดเท่าไหร่ ก่อนที่เราจะรันจริง ๆ ก็ให้ใช้ feature นี้ก่อนนะ

3. อย่าใช้ `select *` อันนี้ก็เป็น practice ที่เราควรใช้ ไม่ว่าจะเป็น BigQuery หรือ data warehouse ตัวอื่น

4. ระวังเรื่อง order by เพราะว่า BigQuery มี architecture แบบ distributed ดังนั้นการที่เราจะใช้ order by ก็มีผลต่อ performance ด้วยนะ เพราะมันต้องไปดึงข้อมูลมาจาก node ต่าง ๆ มา sort ซึ่งถ้าเราจะใช้จริง ๆ ก็ให้ไปใช้ที่ outermost level ของ query ที่เราเขียน

5. ให้เริ่มเขียน SQL ที่ table ที่ **ใหญ่ที่สุดก่อน** และ filter ออกให้มากที่สุดก่อนที่จะเอาไปใช้ต่อ จริง ๆ ตรงนี้จะช่วยตอน BigQuery ทำ shuffling ได้ เค้าบอกว่า BigQuery มีตัว optimizer ทำตรงนี้ให้อยู่แล้ว แต่เพื่อความชัวร์​ เราก็ยึดแนว practice นี้ไว้ก่อนดีกว่า อิอิ

ใครมีทิปแนว ๆ optimizing data warehouse’s performance มาแชร์กันได้นะ 😚

---

<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:** [October 4, 2022, 6:54am UTC](https://discuss.dataengineercafe.io/t/optimize-your-bigquery-performance-sagar-tiwari/423/2 "2022-10-04T06:54:47Z")

</div>

> [@zkan](#):
>
> เริ่มเขียน SQL ที่ table ที่ **ใหญ่ที่สุดก่อน** และ filter ออกให้มากที่สุดก่อนที่จะเอาไปใช้ต่อ

กดไลค์รัวๆ

กรี๊ดมาก เคยเจอ wide table x small table ใช้จริงแค่ไม่กี่ column  
แต่ มา filter ออกหลัง join 🤣
