【问题标题】:How can i change the order of fields in a composite primary key in core data?如何更改核心数据中复合主键中字段的顺序?
【发布时间】:2012-02-27 09:20:14
【问题描述】:

我在数据模型中创建了三个实体:ActorMovieStudio。都有namerating属性,一个演员有多部电影,一个工作室有多工作室,一部电影可以有多演员多工作室。

当我运行项目时,关系表是通过以下方式创建的:

CREATE TABLE Z_1MOVIES ( Z_1ACTORS INTEGER, Z_2MOVIES INTEGER, PRIMARY KEY (Z_1ACTORS, Z_2MOVIES) );
CREATE TABLE Z_2STUDIOS ( Z_2MOVIES1 INTEGER, Z_3STUDIOS INTEGER, PRIMARY KEY (Z_2MOVIES1, Z_3STUDIOS) );

提取actor([movie actors])的运行时间比提取studio[movie studios]的运行时间长,我认为应该是关系表中复合主键的顺序造成的。如果能把Z_1MOVIES中的主键改成(Z_2MOVIES, Z_1ACTORS),性能应该会更好。

那么,有什么方法可以改变核心数据中复合键的顺序?

【问题讨论】:

    标签: core-data composite-key


    【解决方案1】:

    您可能只需要更改表架构。

    ALTER TABLE `Z_1MOVIES` DROP PRIMARY KEY, ADD PRIMARY KEY (Z_2MOVIES, Z_1ACTORS);
    

    如果您按电影选择演员,则需要 Z_2MOVIES 索引。复合索引可以由其左侧部分部分使用。这意味着您可以将索引(a,b)用作索引(a),但不能将其用作索引(b)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-12
      • 2018-08-30
      • 1970-01-01
      • 2021-03-07
      • 2010-10-28
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多