我有一个需要花费很多时间来执行的查询。我不知道如何减少这个。此查询不仅会使PSQL占用高CPU。
我必须在不同条件下选择单个列qazxsw poi作为不同的名称。由于这个要求,我创建了子查询,
查询是:
sip_username
我应该改变什么来加快速度?
你可以试试这段代码:
SELECT sip_username,
product_code,
display_name as dname,
user_id as uid,
location_id,
tenant_id,
(
SELECT sip_username
FROM admin_users_product
WHERE (sip_username = A.sip_username) AND
(product_code = 'bizfms')
) AS bizfms_username,
(
SELECT sip_username
FROM admin_users_product
WHERE (sip_username = A.sip_username) AND
(product_code = 'mlc')
) AS mlc_username,
(
SELECT sip_username
FROM admin_users_product
WHERE (sip_username = A.sip_username) AND
(product_code = 'bizrtm')
) AS bizrtm_username
FROM admin_users_product AS A
WHERE A.location_id = 18
您应该在某些列上创建索引
然后你查询运行得更快......
你可以试试这个。案例不存在索引,您需要创建如Min Namiq Abdullayev所述。
SELECT sip_username,
product_code,
display_name as dname,
user_id as uid,
location_id,
tenant_id,
(CASE product_code
WHEN 'bizfms' THEN
sip_username
ELSE Null
END) AS bizfms_username,
(CASE product_code
WHEN 'mlc' THEN
sip_username
ELSE Null
END) AS mlc_username,
(CASE product_code
WHEN 'bizrtm' THEN
sip_username
ELSE Null
END) AS bizrtm_username
FROM admin_users_product AS A
WHERE A.location_id = 18