cataloginventory_stock_status_idx表的重点是什么?

Mag*_*Seb 6 magento

我已经尝试过很难理解cataloginventory_stock关系 - 我知道stock_item和stock_status表在库存项目被修改时都会更新,但我无法弄清楚stock_status_idx表是否真的需要.

从我所看到的,stock_status_idx表包含与stock_status表相同的信息.它只是临时表吗?如果我手动更新了stock_item和stock_status表,但没有更新stock_status_idx表,我没有看到错误的库存状态有任何问题.

事情是..我认为它以某种方式用于缓存/索引器.但是,即使我没有修改stock_status_idx表,库存状态也会在后端和前端显示得很好.

那么,stock_status_idx表的重点是什么?

非常感谢你的帮助.

aug*_*yer 7

我想知道同样的问题,并决定挖掘,因为我无法在任何地方找到答案.似乎_tmp和_idx用作索引数据的临时持有者.

例如,您可以查看该reindexAll()方法app/code/core/Mage/Catalog/Model/Resource/Category/Indexer/Product.php,您将了解它在生成索引时使用_idx表临时存储它的数据:

$this->useIdxTable(true);
...
$idxTable = $this->getIdxTable();
....
$query = $select->insertFromSelect($idxTable, ...
Run Code Online (Sandbox Code Playgroud)

在同一方法结束时,您会注意到一个很好的$this->syncData()方法调用.你可能猜到了!该函数存在 app/code/core/Mage/Index/Model/Resource/Abstract.php并正在执行此操作,将_idx与main同步:

$this->_getWriteAdapter()->delete($this->getMainTable());
$this->insertFromTable($this->getIdxTable(), $this->getMainTable(), false);
$this->commit();
Run Code Online (Sandbox Code Playgroud)

祝你好运!


Raf*_*ner 2

idx 表仅在 Magento 需要根据库存项目选择许多产品时使用,因此这些表上的索引比使用主库存表更快。

我建议您也将数据写入此表中。或者更好的是,使用 Magento API 或 Magento App over PHP 写入 Magento 数据库,更安全。

  • _idx 表是 Magento 中的临时索引表。IE。它们在重新索引过程中填充,然后在重新索引过程完成时清空。 (2认同)