【问题标题】:Symfony2 Doctrine indexes using YAMLSymfony2 Doctrine 索引使用 YAML
【发布时间】:2014-04-20 10:48:03
【问题描述】:

因为 Doctrine 中有关 YAML 的文档并不能提供真正的信息,所以我试图从 exaple 代码为少数(已经存在的)表创建索引。我在我的 *.orm.yml 文件中添加了一些额外的行,但是在调用 app/console doctrine:generate:entitiesapp/console doctrine:schema:update --force 之后,我收到一条消息说我的数据库已经同步。这有点问题 - 我不是 Symfony 专家,也不是根本没有数据库管理,但据我所知,当我经常使用查询时,索引表是至关重要的,主要是通过表的一列中的值进行搜索,不是吗?所以请帮我通过 Symfony/Doctrine 使用 YAML 创建索引,我不知道我还能做什么。

这是我的 .orm.yml 文件之一:

Sc0\LoginBundle\Entity\LoginDictionary:
  type: entity
  table: login_dictionary
  indexes:
    login_dictionary_index:
      columns: [ name ]

  id:
    name:
      type: string
      length: 30

  fields:
    polish:
      type: string
      length: 150
      nullable: false

如果这很重要,我将使用 PostgreSQL 进行数据库管理。也许我应该只使用普通的 postgres 查询创建标准索引? Symfony 会“看到”那些手动创建的索引吗?

【问题讨论】:

    标签: php postgresql symfony doctrine-orm doctrine


    【解决方案1】:

    由于name 是主键,因此该列已有索引。您可以使用 PHPMyAdmin 检查。这就是为什么您会收到数据库已同步的消息:索引已存在。

    【讨论】:

    • 所以对我来说添加这个“索引:”部分没有意义吗?默认情况下为主键创建索引,所以如果我在这里的查询总是看起来像SELECT polish FROM login_dictionary WHERE name=whatever,就不可能提高速度,对吧?我只是想确定 - 什么时候真正需要索引?
    • 不,已经有一个索引,所以添加 indexes: 不会做任何事情,如您的问题中所述(无需更新 - 您的数据库已经与当前实体元数据同步我>)。关于性能,我很抱歉,但我不知道。但我知道,如果你想执行连接操作,你应该使用一个整数作为主键,以便在其他表中使用它作为外键。整数作为索引比字符串更有效。
    • 永远不需要连接,至少对于这个表来说,因为它只是一个字典。对于所有其他更重要的表,我有一个整数 id 字段。我只是希望我的表设计得很好,而且我多次听说索引表很重要,因为它提高了查询执行的速度。感谢您的帮助!
    猜你喜欢
    • 2014-02-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多