Optimisez les requêtes SQL à l'aide de vues, de tables temporaires et de CTE

Apr 03 2023
.

SELECT SUM(sales.amount) total_sales, customers.name, customers.email
FROM sales
JOIN customers ON sales.customer_id = customers.id
WHERE sales.date BETWEEN ‘2022–01–01’ AND ‘2022–12–31’
GROUP BY customers.id

CREATE VIEW sales_by_customer AS 
SELECT sales.customer_id, SUM(sales.amount) as total_sales
FROM sales
WHERE sales.date BETWEEN ‘2022–01–01’ AND ‘2022–12–31’
GROUP BY sales.customer_id;

SELECT sales_by_customer.total_sales, customers.name, customers.email
FROM sales_by_customer
JOIN customers ON sales_by_customer.customer_id = customers.id;

SELECT sales_by_customer.total_sales, customers.name, customers.email
FROM sales_by_customer
JOIN customers ON sales_by_customer.customer_id = customers.id;

CREATE TEMP TABLE temp_sales_by_customer AS 
SELECT sales.customer_id, SUM(sales.amount) as total_sales
FROM sales
WHERE sales.date BETWEEN ‘2022–01–01’ AND ‘2022–12–31’
GROUP BY sales.customer_id;

SELECT temp_sales_by_customer.total_sales, customers.name, customers.email
FROM temp_sales_by_customer
JOIN customers ON temp_sales_by_customer.customer_id = customers.id;

WITH sales_by_customer AS 
(
 SELECT sales.customer_id, SUM(sales.amount) as total_sales
 FROM sales
 WHERE sales.date BETWEEN ‘2022–01–01’ AND ‘2022–12–31’
 GROUP BY sales.customer_id
)
SELECT sales_by_customer.total_sales, customers.name, customers.email
FROM sales_by_customer
JOIN customers ON sales_by_customer.customer_id = customers.id;