Magento重建索引数据库表名?

时间:2016-11-25 09:11:29

标签: magento indexing

哪些表与magento中重新索引 索引的过程相关联。 请分享任何可用的文件。

1 个答案:

答案 0 :(得分:0)

不能归功于此,因为它取自原始帖子:Can someone explain Magentos Indexing feature in detail?

Magento的索引仅与精神上的数据库级索引类似。正如Anton所说,这是一个非规范化的过程,可以让网站更快地运行。让我试着解释Magento数据库结构背后的一些想法,以及为什么它需要索引才能以高速运行。

更多"典型" MySQL数据库,一个用于存储目录产品的表格,其结构如下:

PRODUCT:
    product_id INT
    sku        VARCHAR
    name       VARCHAR
    size       VARCHAR
    longdesc   VARCHAR
    shortdesc  VARCHAR
    ... etc ...

这对于检索而言很快,但它为一个电子商务软件留下了根本问题:当您想要添加更多属性时,您会怎么做?如果您销售玩具而不是尺寸列,您需要age_range吗?好吧,你可以添加另一个列,但应该很清楚,在一个大型商店(例如,想想沃尔玛),这将导致90%为空的行,并且几乎不可能尝试维护新属性。

为了解决这个问题,Magento将表格分成更小的单位。我不想在这个答案中重新创建整个EAV系统,所以请接受这个简化的模型:

PRODUCT:
    product_id INT
    sku        VARCHAR

PRODUCT_ATTRIBUTE_VALUES
    product_id   INT
    attribute_id INT
    value        MISC

PRODUCT_ATTRIBUTES
    attribute_id
    name

现在可以通过在product_attributes中输入新值然后将相邻记录放入product_attribute_values来随意添加属性。这基本上就是Magento所做的事情(对数据类型的尊重比我在这里显示的要多一点)。事实上,现在没有理由让两个产品具有相同的字段,因此我们可以创建具有不同属性集的整个产品类型!

然而,这种灵活性需要付出代价。如果我想在我的系统中找到衬衫的颜色(一个简单的例子),我需要找到:

  • 项目的product_id(在产品表中)
  • 颜色的attribute_id(在属性表中)
  • 最后,实际值(在attribute_values表中)

Magento曾经像这样工作,但它已经慢了。因此,为了获得更好的性能,他们做出了妥协:一旦店主定义了他们想要的属性,就从头开始生成大表。当某些东西发生变化时,从空间中进行核对并再次生成它。这样,数据主要以我们灵活的格式存储,但是从单个表中查询。

这些结果查找表是Magento"索引"。重新编制索引时,您正在炸毁旧表并再次生成它。