क्वेरी ऑप्टिमाइज़ेशन रणनीतियाँ

BigQuery परिचय

Matt Forrest

Field CTO

तीन अहम नियम

तीन मुख्य ऑप्टिमाइज़ेशन नियम हैं:

  1. जिन डेटा को प्रोसेस करना है, उनकी मात्रा कम करें
  2. क्वेरी ऑपरेशन्स को ऑप्टिमाइज़ करें
  3. अपनी क्वेरी के आउटपुट साइज को कम करें
1 https://cloud.google.com/bigquery/docs/best-practices-performance-compute#use-bi-engine
BigQuery परिचय

डेटा की मात्रा घटाना

  • SELECT * से बचें, और सिर्फ़ ज़रूरी कॉलम ही चुनें
  • CTEs में डेटा को शुरू में ही और बार-बार फ़िल्टर करें
  • WHERE क्लॉज़ से डेटा को जल्दी और बार-बार फ़िल्टर करें
BigQuery परिचय

जॉइन का ऑप्टिमाइज़ेशन

  • CTEs से ज़रूरत भर का डेटा रखें।
  • जॉइन INT64 डेटा टाइप पर करें।
WITH filter_my_data AS (SELECT 
-- Filter data with 
-- WHERE in the CTE first
)
SELECT 
-- This query will run 
-- faster with less data
JOIN a USING (user_id)
BigQuery परिचय

`WHERE` क्लॉज़ का ऑप्टिमाइज़ेशन

  • BigQuery में, {{1}} का उपयोग करें

    • BOOL
    • INT
    • FLOAT
    • DATE
  • WHERE के साथ STRING या BYTE डेटा टाइप उत्तम नहीं हैं।

उत्तम नहीं

SELECT user_id, date_ordered
FROM dataset.table
WHERE product = 'shoes'

उत्तम

SELECT user_id, date_ordered
FROM dataset.table
WHERE product_id = 1234
BigQuery परिचय

ORDER BY ऑप्टिमाइज़ेशन

  • ORDER BY हमेशा क्वेरी के सबसे बाहर (अंत) में होना चाहिए
  • सिर्फ़ एक अपवाद: विंडो क्लॉज़ के भीतर ORDER BY का प्रयोग
BigQuery परिचय

ORDER BY बिना ऑप्टिमाइज़ेशन

उत्तम नहीं

WITH order_total AS (SELECT
user_id,           
sum(product_price) as order_sum
FROM orders
GROUP BY user_id   
-- Order by is not at the end of the query
ORDER BY last_purchase_date
)
SELECT order_total.order_sum, 
users.user_name
FROM dataset.users users
JOIN order_total USING (user_id);
BigQuery परिचय

ORDER BY के साथ ऑप्टिमाइज़ेशन

उत्तम

WITH order_total AS (SELECT
user_id,    
last_purchase_date
sum(product_price) as order_sum
GROUP BY user_id         
)
SELECT order_total.order_sum, 
users.user_name
FROM dataset.users users
JOIN a USING (user_id)
-- Order by should always be at the end
ORDER BY orders_total.last_purchase_date;
BigQuery परिचय

EXISTS बनाम COUNT का उपयोग

  • यदि हमें सिर्फ़ यह जानना हो कि रिकॉर्ड टेबल में है, तो EXISTS का उपयोग करें
  • इस उपयोग-केस के लिए COUNT से बचें
SELECT EXISTS (

  -- Write the main query as a subquery within the exists call
  SELECT
    user_id
  FROM
    dataset.table
  WHERE
    product_category = 'home_goods'
    AND status = 'Closed Account'
);
BigQuery परिचय

अन्य ऑप्टिमाइज़ेशन तरीके

  • APPROX_TOP_SUM या APPROX_COUNT_DISTINCT जैसे approximate aggregate functions का उपयोग करें.
  • कई BigQuery टेबल्स डेट के आधार पर partitioned होती हैं - WHERE क्लॉज़ में डेट शामिल करें.
BigQuery परिचय

अभ्यास करते हैं!

BigQuery परिचय

Preparing Video For Download...