这个SQL查询有多危险?

cod*_*ama 0 sql drupal server-load sql-update drupal-nodes

查询:

UPDATE 
  node as n
    right join content_type_product as c 
    on n.nid = c.nid 

    right join uc_products as p 
    on p.nid = n.nid 

    set 
       c.field_product_price_eur_value = p.sell_price * 0.0961, 
       c.field_product_price_zar_value = p.sell_price * 1, 
       c.field_product_price_gbp_value = p.sell_price * 0.0844, 
       c.field_product_price_usd_value = p.sell_price * 0.1305, 
       n.changed = now() 
    where n.type = 'product'
Run Code Online (Sandbox Code Playgroud)

对于那些尚未弄明白的人,此查询将Drupal站点上的所有NODES更新为所有具有最新货币的NODES.我的问题是,如果您有以下问题,此查询有多危险:

  1. 500个节点
  2. 50 000个节点
  3. 1 000 000节点

如果这个命令每小时执行一次?

我需要知道我是否应该每隔几个小时执行一次这个查询,或者我是否应该将其限制为一次只更新500个等等.

将执行此操作的站点将具有多个节点条目,并且此查询为每1个产品更新了2行.所以,如果我有大量的节点,我不确定这会给服务器带来多大的压力.

Mic*_*ssa 10

我建议在你的测试环境中对此进行基准测试(你确实有一个测试环境,对吗?)来估算你的服务器会遇到什么样的负载.如果不了解更多有关您环境的信息,很难猜测会产生什么样的影响.

但是,为了改善您的应用程序,我建议将汇率存储在单独的表中,并在用户提取特定产品时进行计算.这样,当只有少量数字实际更改时,您不必更新数百万行.如果需要,您甚至可以每隔几分钟而不是每小时更新一次汇率.