Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento是否重新索引数据库表名?_Magento_Indexing - Fatal编程技术网

Magento是否重新索引数据库表名?

Magento是否重新索引数据库表名?,magento,indexing,Magento,Indexing,哪些表格与magento中的索引的重新编制索引的过程相关。 请共享任何可用的文档。不能因此而获得积分,因为它是从原始邮件中获取的: Magento的索引仅在精神上类似于数据库级索引。正如Anton所说,这是一个非规范化的过程,以允许更快地操作站点。让我试着解释一下Magento数据库结构背后的一些想法,以及为什么它需要快速运行索引 在更“典型”的MySQL数据库中,存储目录产品的表的结构如下: PRODUCT: product_id INT sku VARCHAR

哪些表格与magento中的索引的重新编制索引的过程相关。
请共享任何可用的文档。

不能因此而获得积分,因为它是从原始邮件中获取的:

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

在更“典型”的MySQL数据库中,存储目录产品的表的结构如下:

PRODUCT:
    product_id INT
    sku        VARCHAR
    name       VARCHAR
    size       VARCHAR
    longdesc   VARCHAR
    shortdesc  VARCHAR
    ... etc ...
这对于检索来说是很快的,但是对于一个电子商务软件来说,它留下了一个基本的问题:当你想添加更多的属性时,你会怎么做?如果你卖玩具,而不是尺寸栏,你需要的是年龄范围?好的,您可以添加另一列,但应该清楚的是,在大型商店中(比如沃尔玛),这将导致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
现在可以通过在产品属性中输入新值,然后将相邻记录放入产品属性值中,随意添加属性。这基本上就是Magento所做的(比我在这里展示的更尊重数据类型)。事实上,现在根本没有理由让两个产品具有相同的字段,因此我们可以使用不同的属性集创建整个产品类型

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

  • 项目的产品id(在产品表中)
  • 颜色的属性id(在属性表中)
  • 最后是实际值(在属性值表中)
Magento以前是这样工作的,但速度非常慢。因此,为了获得更好的性能,他们做出了妥协:一旦店主定义了他们想要的属性,就开始从一开始生成大表。当某些东西发生变化时,从太空将其核化,然后重新生成。这样,数据主要以灵活的格式存储,但从单个表查询


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

无法对此进行评分,因为它是从以下原始帖子中获取的:

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

在更“典型”的MySQL数据库中,存储目录产品的表的结构如下:

PRODUCT:
    product_id INT
    sku        VARCHAR
    name       VARCHAR
    size       VARCHAR
    longdesc   VARCHAR
    shortdesc  VARCHAR
    ... etc ...
这对于检索来说是很快的,但是对于一个电子商务软件来说,它留下了一个基本的问题:当你想添加更多的属性时,你会怎么做?如果你卖玩具,而不是尺寸栏,你需要的是年龄范围?好的,您可以添加另一列,但应该清楚的是,在大型商店中(比如沃尔玛),这将导致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
现在可以通过在产品属性中输入新值,然后将相邻记录放入产品属性值中,随意添加属性。这基本上就是Magento所做的(比我在这里展示的更尊重数据类型)。事实上,现在根本没有理由让两个产品具有相同的字段,因此我们可以使用不同的属性集创建整个产品类型

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

  • 项目的产品id(在产品表中)
  • 颜色的属性id(在属性表中)
  • 最后是实际值(在属性值表中)
Magento以前是这样工作的,但速度非常慢。因此,为了获得更好的性能,他们做出了妥协:一旦店主定义了他们想要的属性,就开始从一开始生成大表。当某些东西发生变化时,从太空将其核化,然后重新生成。这样,数据主要以灵活的格式存储,但从单个表查询

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