如何优化包含内部联接的PostgresqlSQL查询

如何优化包含内部联接的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表中的可疑订单。 可疑订单的条件是,每个新订单(间隔内)都有“new Customer”(新客户)标签,并使用表
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.