Is there any alternative of node_save to update database fields in iteration? In Drupal 7, we have big product catalog where we need to update price and stock frequently via Cronjobs.

If we update only 5000 prices then also it takes around 20 min.
In each iteration we use node_load() and node_save() functions to update for each product in database.

It seems that these functions are consuming more memory and taking more execution time to just update 1/2 fields in database.
It's drupal's API, so it would be integrated to some other stuff (like node revision) so I doubt that we can simply replace node functions with direct queries.

But I think, this scenario would be common when we manage large product catalog in drupal.

Can anyone suggest better/optimized approach for this scenario where it doesn't break the integrity with drupal platform?
you can use entity module. This module proves entity_matadata_wrapper API which allows you to load and save fields of nodes. The following code is an example of altering a node's title. 

$nodeWrapper = entity_metadata_wrapper('node', node_load($node-&gt;nid));
$nodeWrapper-&gt;title-&gt;set(t("Saved by Entity Save"));
$nodeWrapper-&gt;save();


entity_matadata_wrapper is not limited to nodes. As you can see in it's signature you must specify the element which in your case it is node.