全文索引vs %%和聚簇索引
问题描述:
我有两个问题。全文索引vs %%和聚簇索引
- 当我必须选择
Integer
类型列上的聚簇索引而不是通过字符串值类型列选择聚簇索引时,它有意义吗?
为什么?
聚集索引将导致每当因为新行不追加到索引的末尾,但在中间插入
我是正确的INSERT被处理的页面数据的顺序?选择Integer
类型列的聚簇索引的其他原因是什么?或者我正朝错误的方向发展?
-
当我有搜索使用
%...%
串像下面的查询Select Column1 From Table1 Where Column1 Like '%SomeVal%'
我有以下这个问题。
- 在上述情况下使用
%....%
有意义吗? - 我可以把聚簇索引
Column1
,然后去%....%
- 我应该选择全文索引吗?如果是这样,为什么我更喜欢全文索引
%...%
?
答
是,SQL服务器(和一般的计算机)在通过号码清单看起来比他们通过文本列表更快。这意味着搜索WHERE ID = 3的记录通常比WHERE FirstName ='BOB'更快。如果你的系统专注于追踪一个或另一个系统,比如当用户点击一个你可以选择存储ProductID或ProductName的产品时,这很好,ProductID将会更快。但是,如果WHERE子句中的唯一列是文本字段,就像您总是通过标题查找电影一样,那么您最好将聚集索引放在该列上。作为一般规则,我有一个带有聚集索引的整数ID字段,然后在另一个字段上放置一个非聚簇索引,但这取决于情况。 FTS是基于词的,而通配符(%)是基于模式的,所以如果您需要搜索文本字段中的“Patricia”,FTS可能是您的最佳选择,但是如果您需要搜索“ Pat%“寻找”Patrick“或”Pattie“或”Patricia“,FTS将无法正常工作。我希望这是有道理的。搜索*或google“fts vs like”,你会得到一些关于此事的讨论。
使用'%'的前缀将最好进行索引扫描。你的问题没有意义。而不是告诉我们你的感知解决方案,告诉我们你正试图解决的实际问题。 –
@mitchwheat - 先生,我的查询是基于包含谓词。正如查询中所述。 – Pankaj
这没有帮助..... –