2013-10-08 57 views
0

我目前正在处理一个SQL任务,要求我: 为Company和Customer的每个外键和索引添加一个索引。添加SQL索引

我创建了需要的3个表,创建了外键和主键等等。但是我的教科书并没有提到有关指数的任何内容,我对于该做什么感到不知所措。如果你有答案,很高兴知道你是如何做到的。

表的结构:

客户

CustomerID (PK) | Company | ContactName | Phone 

订购

OrderID (PK) | OrderDate | ShippedDate | ShipperID | Freight | CustomerID (FK) 

托运人

ShipperID (PK) | Company | Phone 
+2

检查数据库手册的'CREATE INDEX'声明。 – Thilo

+0

呵呵? @FerretallicA我在上面的问题上做了编辑,但它说你做到了。同时查看问题的修订版本 - 我的编辑将以您的名字列出...:|这是一个错误还是我疯了? –

+2

作为一名学生,你应该自己解决/解决这个问题。 BOL(Online OnLine)是你的朋友。这对我们来说不是“适当的形式”来帮助你。对不起,如果我看起来有点不友好,但我认为你的老师/教授会同意。 :) – Leptonator

回答

1

你应该看online documentation,但是......

要为外键创建索引:

create index Order_ShipperID on Order(ShipperID); 
create index Order_CustomerID on Order(CustomerID); 

要为客户和托运人创建公司指数:

create index Customer_Company on Customer(Company); 
create index Shipper_Company on Shipper(Company); 

索引的名称可以是任何东西,但我通常遵循这个命名约定。


顺便说一句,名称“订单”的选择是一个糟糕的,因为它是一个保留字。

+0

如果模式指定CustomerID,OrderID和ShipperID是唯一的 - 是否与显式创建索引相同?您是否需要在添加新条目后重新索引表格? –

+0

如果id列被定义为“主键”,则它们隐式地具有定义在其上的唯一索引。如果您没有将它们定义为主键,则应该使用唯一索引 - 只需在“create”和“index”之间添加“unique”这个词。你不需要重新索引添加数据 - 数据库维护我看到的即时索引 – Bohemian

+0

。在这种情况下 - 鉴于这些字段已经是主键(根据OP对表的描述) - 不是'create index'多余的吗? –

0

您可以在任何SQL表列创建索引。在您的表列上创建索引后,您只需发送选择查询,并可以逻辑检查查询的性能。您可以检查下一个环节的参考解决方案:

www.blog.mastersoftwaresolutions.com/how-do-database-indexes-work/