Help Center/ GaussDB/ Distributed_8.x/ SQL Optimization/ Optimization Cases/ Case: Rewriting SQL Statements to Eliminate Subqueries
Updated on 2024-06-03 GMT+08:00

Case: Rewriting SQL Statements to Eliminate Subqueries

Symptom

1
2
3
4
select 
    1,
    (select count(*) from customer_address_001 a4 where a4.ca_address_sk = a.ca_address_sk) as GZCS 
from customer_address_001 a;

This SQL performance is poor. SubPlan exists in the execution plan as follows.

Optimization

The core of this optimization is to eliminate subqueries. Based on the service scenario analysis, a.ca_address_sk is not NULL. In terms of SQL syntax, you can rewrite the SQL statement as follows:

1
2
3
4
5
select 
count(*) 
from customer_address_001 a4, customer_address_001 a
where a4.ca_address_sk = a.ca_address_sk
group by  a.ca_address_sk;

To ensure that the modified statements have the same functions, NOT NULL is added to customer_address_001. ca_address_sk.