详情页标题前

PolarDB这个问题怎么解决? max没有排序语义 sql语义变了 -云小二-阿里云

详情页1

PolarDB这个问题怎么解决? max没有排序语义 sql语义变了,改成这种窗口函数实现 可以走列存 也非常慢 直接把ap节点cpu拉满了,SELECT ep.product_id, p.products_name AS products_name_m, p.products_url_name, ep.enterprise_id, ent.enterprise_name_en AS enterprise_name
, ent.url_name AS enterprise_url_name, ep.specification, DATE_FORMAT(ep.price_date, ‘%Y-%m-%d’) AS price_date
, ep.price_unit, ep.price AS current_price
, (
SELECT tmp.price
FROM (
SELECT ep2.price, ROW_NUMBER() OVER (PARTITION BY ep2.product_id ORDER BY ep2.price_date DESC) AS rank_no
FROM echemi_db_v0_3.t_zy_enterprise_price ep2
LEFT JOIN t_zy_enterprise_price ep
ON ep2.product_id = ep.product_id
AND ep2.enterprise_id = ep.enterprise_id
WHERE IFNULL(ep2.delflag, ”) ‘1’
AND ep2.price_date < ep.price_date
AND IFNULL(ep2.price_date, ”) != ”
AND IFNULL(ep2.price, ”) != ”
AND IFNULL(ep2.delflag, ”) != ‘1’
) tmp
WHERE tmp.rank_no = 1
) AS previous_price, 0 AS subscribe_flag
FROM t_zy_enterprise_price ep
INNER JOIN t_e_products p
ON p.products_id = ep.product_id
AND p.information_flag = ‘1’
AND IFNULL(p.delflag, ‘0’) != ‘1’
INNER JOIN t_zy_enterprise ent
ON ent.id = ep.enterprise_id
AND IFNULL(ent.delflag, ‘0’) != ‘1’
INNER JOIN (
SELECT ep3.product_id, ep3.enterprise_id, MAX(ep3.price_date) AS max_price_date
FROM t_zy_enterprise_price ep3
GROUP BY ep3.product_id, ep3.enterprise_id
) pimax
ON pimax.product_id = ep.product_id
AND pimax.enterprise_id = ep.enterprise_id
AND pimax.max_price_date = ep.price_date
WHERE ep.delflag = ‘0’
ORDER BY subscribe_flag DESC, ep.price_date DESC, ep.update_date DESC, ep.id
LIMIT 5

以下为热心网友提供的参考意见

那得用window改,SELECT
tmp1.*,
(
SELECT
tmp.price
FROM
(
SELECT
ep2.price,
ROW_NUMBER() OVER (
PARTITION BY ep2.product_id
ORDER BY
ep2.price_date DESC
) AS rank_no
FROM
echemi_db_v0_3.t_zy_enterprise_price ep2
LEFT JOIN t_zy_enterprise_price ep ON ep2.product_id = ep.product_id
AND ep2.enterprise_id = ep.enterprise_id
WHERE
IFNULL(ep2.delflag, ”) ‘1’
AND ep2.price_date < ep.price_date
AND IFNULL(ep2.price_date, ”) != ”
AND IFNULL(ep2.price, ”) != ”
AND IFNULL(ep2.delflag, ”) != ‘1’
) tmp
WHERE
tmp.rank_no = 1
) AS previous_price,
0 AS subscribe_flag
FROM
(
SELECT
ep.product_id,
p.products_name AS products_name_m,
p.products_url_name,
ep.enterprise_id,
ent.enterprise_name_en AS enterprise_name,
ent.url_name AS enterprise_url_name,
ep.specification,
DATE_FORMAT(ep.price_date, ‘%Y-%m-%d’) AS price_date,
ep.price_unit,
ep.price AS current_price,
ep.price_date as pd,
ep.update_date as ud,
ep.id as id
FROM
t_zy_enterprise_price ep
INNER JOIN t_e_products p ON p.products_id = ep.product_id
AND p.information_flag = ‘1’
AND IFNULL(p.delflag, ‘0’) != ‘1’
INNER JOIN t_zy_enterprise ent ON ent.id = ep.enterprise_id
AND IFNULL(ent.delflag, ‘0’) != ‘1’
INNER JOIN (
SELECT
ep3.product_id,
ep3.enterprise_id,
MAX(ep3.price_date) AS max_price_date
FROM
t_zy_enterprise_price ep3
GROUP BY
ep3.product_id,
ep3.enterprise_id
) pimax ON pimax.product_id = ep.product_id
AND pimax.enterprise_id = ep.enterprise_id
AND pimax.max_price_date = ep.price_date
WHERE
ep.delflag = ‘0’
ORDER BY
subscribe_flag DESC,
ep.price_date DESC,
ep.update_date DESC,
ep.id
LIMIT
5
) tmp1
ORDER BY
subscribe_flag DESC,
tmp1.pd DESC,
tmp1.ud DESC,
tmp1.id
LIMIT
5
试试这个,先做LIMIT 5减少下window的计算量,也可以试试把
SELECT ep2.price, ep2.price_date FROM t_zy_enterprise_price ep2 ORDER BY ep2.price_date DESC, ep2.price desc limit 1;
改为
select max(ep2.price) FROM t_zy_enterprise_price ep2 where ep2.price_date = (SELECT max(price_date) from t_zy_enterprise_price);此回答整理自钉群“PolarDB专家面对面 – HTAP(列存索引)”

转转请注明出处:https://www.yunxiaoer.com/178941.html

(0)
上一篇 2023年12月28日
下一篇 2023年12月28日
详情页2

相关推荐

  • PolarDB中pdb的冷归档存储价格与xengine价格对比怎么样?-云小二-阿里云

    PolarDB中pdb的冷归档存储价格与xengine价格对比怎么样? 以下为热心网友提供的参考意见 PolarDB的存储空间价格因节点类型和所处地域等因素而异,详细价格可参见官方文档。对于冷数据存储,采用OSS服务,按照实际使用的容量以小时为单位收费。在中国内地地域的价格为0.00021元/GB/小时,而在中国香港及海外地域的价格为0.000294元/GB…

    阿里云 2024年1月3日
  • 在PolarDB中,为什么我的实例是锁定中?-云小二-阿里云

    在PolarDB中,为什么我的实例是锁定中? 以下为热心网友提供的参考意见 在PolarDB中,如果实例被锁定,一种可能的原因是发生了死锁。死锁是关系型数据库系统中常见的错误,出现在不同事务中同时对某些数据访问加锁时都要等待对方请求中的数据而无法获取锁,此时数据库系统会自动选择一个牺牲事务以解决死锁问题。对于如何检测和定位死锁,您可以登录PolarDB控制台…

    2024年1月2日
  • 函数计算中,FC是否可以直连RDS?-云小二-阿里云

    函数计算中,FC是否可以直连RDS? 以下为热心网友提供的参考意见 是的,函数计算(Function Compute)可以直连关系型数据库服务(RDS)。在AWS中,你可以使用Lambda函数直接连接到RDS实例并执行查询操作。以下是一个示例代码片段,演示如何使用Python和boto3库连接到RDS实例并执行查询: import boto3 def lam…

    阿里云 2024年1月9日
  • 阿里云Serverless中这个serverless应用,能管理MySQL,Redis之类的吗? -云小二-阿里云

    阿里云Serverless中这个serverless应用,能管理MySQL,Redis之类的吗?

    阿里云 2023年12月20日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • DataWorks中odps向hbase同步数据失败?-云小二-阿里云

    DataWorks中odps向hbase同步数据失败? 以下为热心网友提供的参考意见 HBase Reader仅支持使用新增和使用独享数据集成资源组,不支持使用默认资源组和自定义资源组。https://help.aliyun.com/zh/dataworks/user-guide/hbase-data-source?spm=a2c4g.11186623.0.…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。