0

我有两个问题。

  1. Integer当我必须在类型列上选择聚集索引而不是在字符串值类型列上选择它时,这是否有意义。

为什么?

每当处理 INSERT 时,聚集索引将导致页面数据重新排序,因为新行没有附加到索引的末尾而是插入到中间

我是对的?Integer为类型列选择聚集索引的任何其他原因?还是我走错了方向?

  1. 当我必须使用%...%如下查询搜索字符串时

    Select Column1 From Table1 Where Column1 Like '%SomeVal%'
    

我对此有以下问题。

  1. %....%在上述情况下使用有意义吗?
  2. 我可以把聚集索引放在Column1然后再去吗%....%
  3. 我应该选择全文索引吗?如果是这样,为什么我应该更喜欢全文索引%...%
4

1 回答 1

4
  1. 是的,SQL Server(和一般的计算机)在查看数字列表时比查看文本列表更快。这意味着搜索 WHERE ID = 3 的记录通常比 WHERE FirstName = 'BOB' 更快。如果您的系统已准备好跟踪其中一个或另一个,这将非常有用,例如当用户单击产品时,您可以选择存储 ProductID 或 ProductName,ProductID 会拉得更快。但是,如果 WHERE 子句中唯一的列是一个文本文件,就像您总是按标题查找电影一样,那么最好将聚集索引放在该列上。作为一般规则,我有一个带有聚集索引的整数 ID 字段,然后在另一个字段上放置一个非聚集索引,但这确实取决于具体情况。

  2. FTS 是基于单词的,而通配符 (%) 是基于模式的,因此如果您需要在文本字段中搜索“Patricia”,FTS 可能是您的最佳选择,但如果您需要搜索“Pat%”来查找对于“Patrick”或“Pattie”或“Patricia”,FTS 将无法正常工作。我希望这是有道理的。在StackOverflow 或谷歌上搜索“fts vs like”,你会得到一些关于这个问题的讨论。

于 2012-06-19T06:27:58.083 回答