BigQuery'ye Giriş
Matt Forrest
Field CTO
Üç temel iyileştirme kuralı vardır:
SELECT * kullanmaktan kaçının; yalnızca gereken sütunları seçinWHERE ile erken ve sık filtreleyinINT64 veri türüyle join yapın.WITH filter_my_data AS (SELECT
-- Önce CTE içinde
-- WHERE ile filtreleyin
)
SELECT
-- Daha az veriyle sorgu
-- daha hızlı çalışır
JOIN a USING (user_id)
BigQuery'de şunları kullanın
BOOLINTFLOATDATE WHERE, STRING veya BYTE içeren veri türleri optimal değildir.
Optimal değil
SELECT user_id, date_ordered
FROM dataset.table
WHERE product = 'shoes'
Optimal
SELECT user_id, date_ordered
FROM dataset.table
WHERE product_id = 1234
ORDER BY her zaman sorgunun en dışında (sonunda) olmalıdırORDER BY kullanmaktırOptimal değil
WITH order_total AS (SELECT
user_id,
sum(product_price) as order_sum
FROM orders
GROUP BY user_id
-- Order by sorgunun sonunda değil
ORDER BY last_purchase_date
)
SELECT order_total.order_sum,
users.user_name
FROM dataset.users users
JOIN order_total USING (user_id);
Optimal
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 her zaman sonda olmalı
ORDER BY orders_total.last_purchase_date;
EXISTS kullanınCOUNT kullanmaktan kaçınınSELECT EXISTS (
-- Ana sorguyu exists çağrısı içinde bir alt sorgu olarak yazın
SELECT
user_id
FROM
dataset.table
WHERE
product_category = 'home_goods'
AND status = 'Closed Account'
);
APPROX_TOP_SUM veya APPROX_COUNT_DISTINCT gibi yaklaşık toplu fonksiyonları kullanın.WHERE koşuluna tarih ekleyin.BigQuery'ye Giriş