小编oat*_*oda的帖子

SQL Server 全文搜索 - .rtf 文件被 rtf 标签错误地索引

我已经在我的 SQL Server DB 上的一varbinary(max)列上设置了全文索引。我指定了一个类型列,其中包含文件的扩展名,例如“.doc”、“.pdf”等。

但是,我注意到当任何 .rtf 文件被索引时,SQL 将包含文件中的所有元信息(例如 RTF 标记“listoverridecount0”)。

这使索引膨胀很多,也意味着搜索将匹配这些标签(即我可以搜索“listoverridecount0”并返回每个 .rtf)。

.rtf 的 iFilter 是否有任何理由不会删除 RTF 标签?

当我运行这个:

SELECT * FROM sys.fulltext_document_types WHERE document_type = '.rtf';
Run Code Online (Sandbox Code Playgroud)

我明白了:

document_type  .rtf                                     
class_id       C7310720-AC80-11D1-8DF3-00C04FB6EF4F 
path       c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\msfte.dll
version        12.0.6828.0
manufacturer   Microsoft Corporation
Run Code Online (Sandbox Code Playgroud)

我已提交Microsoft Connect 错误,因为我似乎无法找到任何解决方法。据推测,这是 a) RTF iFilter 未删除标签的错误,或 b) 全文索引问题。

我的 SQL Server 版本是:

Microsoft SQL Server 2012 (SP1) - 11.0.3393.0 (X64) 
2013 年 10 月 25 日 19:04:40 
版权所有 (c) 微软公司 …

sql-server full-text-search sql-server-2012

6
推荐指数
1
解决办法
1353
查看次数

如何证明以下 T-SQL 对性能不利?

我最近继承了一个包含大量存储过程的代码库。他们支持的系统遇到了许多我正在研究的性能问题。

许多存储过程都有这样的模式:

  1. 创建临时表
  2. 建立动态 SQL 查询以插入一堆记录,例如

    DECLARE @sql VARCHAR(MAX)
    SET @sql = 'INSERT INTO @tempTable
    SELECT SomeColumn, SomeColumn2, SomeColumn3, etc FROM MyTable'
    
    IF @someParam = [SomeValue]
        SET @sql = @sql + 'WHERE SomeColumn = [SomeValue]';
    
    IF @someOtherParam = [SomeOtherValue]
        SET @sql = @sql + 'WHERE SomeOtherColum = [SomeOtherValue]';
    
    Run Code Online (Sandbox Code Playgroud)
  3. 执行这个动态sql

    EXEC(@sql);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 从临时表中选择并带入一堆附加信息以返回给客户端。

    SELECT
    
       ...
    
    FROM
    
       @tempTable
       INNER JOIN ...
    
    Run Code Online (Sandbox Code Playgroud)

我的即时想法是:

  • 有动态 SQL,所以没有缓存计划,这意味着每次都会生成计划。
  • 有一个INSERT SELECT模式,所以表锁定更有可能是一个问题。

我用这种方式重写了一些存储过程:

    SELECT 

       ...

    FROM

        MyTable 
        INNER JOIN ...

    WHERE

    (
        @someParam != SomeValue
        OR
        SomeColumn …
Run Code Online (Sandbox Code Playgroud)

performance sql-server stored-procedures t-sql query-performance performance-tuning

4
推荐指数
2
解决办法
2479
查看次数