【问题标题】:creating index for the following query为以下查询创建索引
【发布时间】:2018-04-04 00:02:28
【问题描述】:
SELECT Vehicle_ID, RENTAL_ID

FROM Vehicle, Rental

WHERE Vehicle.VEHICLE_ID = RENTAL.RENTAL_ID;

Rental ID 和 Vehicle ID 是 2 个不同表中的主键。

我该怎么做呢?我是否分别创建 2 个唯一索引,然后为其余索引创建非唯一索引?或者有没有办法把它结合起来?

谢谢!

【问题讨论】:

  • 显然你已经编辑了你的查询 - 我不清楚为什么你需要一个额外的索引,因为上面连接中使用的索引已经是主键。

标签: sql oracle indexing


【解决方案1】:

您可以为外键添加一个非聚集索引,即采购表中的 Customer_ID。

然后执行如下连接:

选择 c.Name、p.Purchase_Date、p.QUANTITY 来自客户 c 加入购买 p 在 c.CUSTOMER_ID = p.CUSTOMER_ID

【讨论】:

    【解决方案2】:

    这回答了问题的原始版本。

    您应该使用明确的JOIN 语法编写查询并使用表别名:

    SELECT c.Name, p.Purchase_Date, p.QUANTITY
    FROM CUSTOMER c JOIN
         PURCHASE p
         ON c.CUSTOMER_ID = p.CUSTOMER_ID;
    

    此查询需要的唯一附加索引是purchase(customer_id)

    【讨论】:

    • 查询是按照我发布的方式给出的。我只需要基于它创建索引,谢谢
    猜你喜欢
    • 2016-02-23
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2011-01-01
    • 2010-10-05
    • 2015-03-21
    • 2017-03-24
    相关资源
    最近更新 更多