如何优化包含内部联接的PostgresqlSQL查询
我正在尝试创建一个视图,其中包含orders表中的可疑订单。 可疑订单的条件是,每个新订单(间隔内)都有“new Customer”(新客户)标签,并使用表如何优化包含内部联接的PostgresqlSQL查询,postgresql,query-optimization,postgresql-10,Postgresql,Query Optimization,Postgresql 10,我正在尝试创建一个视图,其中包含orders表中的可疑订单。 可疑订单的条件是,每个新订单(间隔内)都有“new Customer”(新客户)标签,并使用表orders(订单)折扣码中的折扣码(\u sdc\u sequence),并且客户的邮政编码或电话号码在该间隔之前匹配。 我的尝试是 创建了一个包含所有旧订单(间隔2天之前)和“新客户标签”的视图 后来他加入了他们 我需要的是第三个视图(可疑订单视图 ) 有没有办法优化这些查询?该表包含一条以上的100K记录。每天在new\u orders
orders(订单)折扣码中的折扣码(\u sdc\u sequence
),并且客户的邮政编码或电话号码在该间隔之前匹配。
我的尝试是
创建了一个包含所有旧订单(间隔2天之前)和“新客户标签”的视图
后来他加入了他们
我需要的是第三个视图(可疑订单视图
)
有没有办法优化这些查询?该表包含一条以上的100K记录。每天在new\u orders\u视图中有50-100条新记录
如果查询没有两个虚拟视图就更好了(如果不可能优化,那么这样做也很好)
我已经在我的应用程序和tring中使用它来连接googledatastudio
出错
错误:
Unable to Connect Host: An I/O error occurred while sending to the backed.
因此,优化查询将更合适
我正在使用Postgresql 10
任何帮助都将不胜感激。提前谢谢。考虑将内部连接更改为子查询(以便不返回重复的结果),并考虑为性能添加索引。如果您希望我们能够为您提供更多帮助,请向我们解释慢速查询的计划。好奇您是否可以规范化您的标记数据<像“%New Customer%”这样的代码>每次都相当于一次完整的表扫描。@MikeChristensen没有办法更改像“%New Customer%”这样的@TamirIlan如何将内部联接更改为子查询?我希望这会有帮助?
CREATE OR REPLACE VIEW schema.new_orders_view AS
SELECT odr.id, odr.customer__id,odr.name, odr.billing_address__phone, odr.shipping_address__zip,odr.order_number, odr.updated_at
FROM schema.orders odr, schema.orders__discount_codes odc
WHERE odr._sdc_sequence=odc._sdc_sequence
AND
odr.updated_at>=now() - interval '2 day'
AND
odr.tags LIKE'%New Customer%'
AND
odr.cancelled_at is null
AND
odr. confirmed ='t';
CREATE OR REPLACE VIEW schema.suspicious_orders_view AS
SELECT n_odr.customer__id new_customer__id,n_odr.name new_name,o_odr.customer__id old_customer__id,o_odr.name old_name,o_odr.updated_at old_updated_at,n_odr.updated_at new_updated_at, o_odr.id old_id, n_odr.id new_id
FROM
schema.new_orders_view n_odr, schema.old_orders_view o_odr
WHERE
o_odr.billing_address__phone=n_odr.billing_address__phone
OR
o_odr.shipping_address__zip=n_odr.shipping_address__zip;
Unable to Connect Host: An I/O error occurred while sending to the backed.