想从中得到一些建议。我有一张表,我想在其中跟踪一个对象以及与该对象相关的键列表。例子:
OBJECTID ITEMTYPE ITEMKEY
-------- -------- -------
1 1 THE
1 1 BROWN
1 2 APPLE
1 3 ORANGE
2 2 WINDOW
OBJECTID 和ITEMKEY 都具有很高的选择性(即OBJECTID 和ITEMKEY 变化很大)。我的访问有两种方式:
按 OBJECTID:每次对象更改时,键列表都会更改,因此需要基于 OBJECTID 的键。变化经常发生。
By ITEMKEY:这是用于关键字搜索,也经常发生。
所以我可能需要两个键,并为聚集索引选择一个(更频繁访问的那个,或者我希望速度达到的位置,现在假设我将优先考虑聚集的 OBJECTID)。我很困惑的是我应该如何设计它。
我的问题是,哪个更好:
a) (OBJECTID,ITEMTYPE,ITEMKEY) 的聚集索引,然后是 (ITEMKEY) 的索引。我担心的是,由于聚集索引太大(2 个整数,1 个字符串),索引会很大,因为所有索引项都必须指向聚集键。
b) 创建一个以运行标识 DIRECTORYID (integer) 作为主键和聚集索引的新列,并为 (OBJECTID,ITEMTYPE,ITEMKEY) 和仅 (ITEMKEY) 声明两个索引。这将最小化索引空间但具有更高的查找成本。
c) (OBJECTID,ITEMTYPE,ITEMKEY) 的聚集索引,以及 (ITEMKEY,ITEMTYPE,OBJECTID) 的物化视图。我的逻辑是,这避免了键查找,并且仍然与在 a) 中查找的索引一样大,但代价是更高的开销。
d)Err ...根据要求,也许有更好的方法?
在此先感谢,安德鲁