การ execute query ของ hive

สวัสดีครับพอดีผมได้มีปสก. ลองรัน data เยอะครั้งแรกครับประมาณ 5000 กว่าล้าน record
แล้วคราวนี้ใน qry ที่ผมเขียนจะใช้พวก case when, sum, substring แล้วก็มี where ครับ
สิ่งที่ผมเจอคือ
ผมรัน qry ที่มันทั้งพวก case when, sum, substring และ where รันประมาณ 10ชม++ ครับ

แต่ผมลองเปลี่ยนมาเป็น create temp 2 ก้อน
ก้อนแรกคือก้อนที่ where มาแล้ว
ก้อนที่ 2 คือเอาก้อนแรกมาทำ transform ต่างๆ ใช้เวลารันประมาณ 1ชม.

แล้วผมก็มาดูว่าการทำงานของ qry ทั้ง 2 แบบไม่ต่างกันมาก
ยกตัวอย่าง qry ทั้ง 2 แบบ
แบบที่ 1
CREATE TEMPORARY TABLE a (
SELECT
case when,
sum,
substring
FROM x
WHERE y=z)

แบบที่ 2
CREATE TEMPORARY TABLE a (
SELECT
case when,
sum,
substring
FROM x
WHERE y=z
)

CREATE TEMPORARY TABLE b (
SELECT *
FROM a
)
ผมเลยอยากรู้ว่า logic ของ hive ในการอ่าน qry มันทำงานยังไงครับ
ขอบคุณครับ

ผมไม่แน่ใจข้างในของ Hive ว่าทำงานอย่างไรนะครับ พี่ @Nengchakun หรือ @yothinix อาจจะสามารถช่วยเสริมส่วนตรงนี้ได้

ผมขอตอบแบบ Practice การ Query ข้อมูลโดยทั่วไปแทนนะครับผม ตรงนี้ใช้ได้กับทุก ๆ Data Warehouse เลยคือ ให้เรา Filter ตารางใหญ่ ๆ ให้เหลือน้อย ๆ ก่อน แล้วค่อยเอามาทำ Aggregation ต่อ ซึ่งแน่นอนว่าส่วน Computation จะเร็วกว่า เพราะว่าคำนวณจากข้อมูลที่น้อยกว่าครับผม

บทความในนี้อาจจะมีประโยชน์ครับ สรุปบทความ Optimize your bigquery performance ของ Sagar Tiwari