【发布时间】:2012-06-19 03:49:35
【问题描述】:
我有两个问题。
- 当我必须在
Integer类型列上选择聚集索引而不是在字符串值类型列上选择它时是否有意义。
为什么?
每当处理 INSERT 时,聚集索引都会导致页面数据重新排序,因为新行没有附加到索引的末尾而是插入到中间
我是对的吗?为Integer 类型列选择聚集索引的任何其他原因?还是我走错方向了?
-
当我必须使用
%...%搜索字符串时,如下查询Select Column1 From Table1 Where Column1 Like '%SomeVal%'
我有以下问题。
- 在上述情况下使用
%....%有意义吗? - 我可以把聚集索引放在
Column1,然后再去%....% - 我应该选择全文索引吗?如果是这样,为什么我更喜欢全文索引而不是
%...%?
【问题讨论】:
-
带有 '%' 的前缀最多只能进行索引扫描。你的问题真的没有意义。与其告诉我们您认为的解决方案,不如告诉我们您要解决的实际问题。
-
@mitchwheat - 先生,我的查询基于包含谓词。如查询中所述。
-
我通常将我的索引聚集在表中最常用的外键上,这样通过该 FK 进行的查找/连接就在磁盘上的同一页面中(应该更快)。此外,%...% 相当昂贵,具体取决于您预期的记录数量。我会尽可能避免这些,但 FTS 是另一种蠕虫。如上所述,更多细节会有所帮助。
标签: sql-server sql-server-2008 sql-server-2005 full-text-search clustered-index