Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server查询某些时间使用freetexttable花费太多时间-查找索引问题_Sql Server_Full Text Search_Indexing_Freetexttable - Fatal编程技术网

Sql server SQL Server查询某些时间使用freetexttable花费太多时间-查找索引问题

Sql server SQL Server查询某些时间使用freetexttable花费太多时间-查找索引问题,sql-server,full-text-search,indexing,freetexttable,Sql Server,Full Text Search,Indexing,Freetexttable,以下是我的查询,它需要大约1分钟的时间,有时会在一秒钟内给出结果, 问题发生了,特别是我在一段时间前执行了查询,或者在查询中添加了一些新关键字。 看起来像是索引问题,当我执行执行计划时,RID查找成本为60%。源表有大约2-5个Lacs数据,每天将添加大约10000-20000行。请告诉我。谢谢 SELECT * FROM (SELECT Row_number() OVER (ORDER BY rank DESC, jobid DESC) AS rnum, *

以下是我的查询,它需要大约1分钟的时间,有时会在一秒钟内给出结果, 问题发生了,特别是我在一段时间前执行了查询,或者在查询中添加了一些新关键字。 看起来像是索引问题,当我执行执行计划时,RID查找成本为60%。源表有大约2-5个Lacs数据,每天将添加大约10000-20000行。请告诉我。谢谢

SELECT *
FROM   (SELECT Row_number() OVER (ORDER BY rank DESC, jobid DESC) AS rnum,
               *
        FROM   (SELECT rank,
                       joblistview.*
                FROM   joblistview,
                       FREETEXTTABLE(joblistview, jobtitle, 'seo manager') f
                WHERE  joblistview.jobid = f.[key]
                       AND CONTAINS(joblistview.joblocation, 'mumbai')
                UNION
                SELECT rank,
                       joblistview.*
                FROM   joblistview,
                       FREETEXTTABLE(joblistview, jobdescription, 'seo manager')
                       f
                WHERE  joblistview.jobid = f.[key]
                       AND CONTAINS(joblistview.joblocation, 'mumbai')
                UNION
                SELECT rank,
                       joblistview.*
                FROM   joblistview,
                       FREETEXTTABLE(joblistview, company_name, 'seo manager') f
                WHERE  joblistview.jobid = f.[key]
                       AND CONTAINS(joblistview.joblocation, 'mumbai')) AS xx)AS
       tt
WHERE  rnum BETWEEN 11 AND 20  
执行计划


您可以在一次搜索中指定多个列,这将消除使用联合进行多个查询的需要

SELECT *
FROM   (SELECT Row_number() OVER (ORDER BY rank DESC, jobid DESC) AS rnum,
               *
        FROM   (SELECT rank,
                       joblistview.*
                FROM   joblistview,
                       FREETEXTTABLE(joblistview, (jobtitle,jobdescription,company_name), 'seo manager') f
                WHERE  joblistview.jobid = f.[key]
                       AND CONTAINS(joblistview.joblocation, 'mumbai')
               ) AS xx
       ) AS tt
WHERE  rnum BETWEEN 11 AND 20  

是否尝试添加包含所有搜索列数据的计算列?然后将此计算列配置为持久化,并对其进行全文索引。然后你可以试试

SELECT *
FROM   (SELECT Row_number() OVER (ORDER BY rank DESC, jobid DESC) AS rnum,
               *
        FROM   (SELECT rank,
                       joblistview.*
                FROM   joblistview,
                       FREETEXTTABLE(joblistview, (<<<ComputedColumn>>>), 'seo manager') f
                WHERE  joblistview.jobid = f.[key]
                       AND CONTAINS(joblistview.joblocation, 'mumbai')
               ) AS xx
       ) AS tt
WHERE  rnum BETWEEN 11 AND 20 

您已将同一查询联合了三次-给出了什么?它们不是同一个查询,每个查询使用FREETEXTTABLE函数搜索不同的列jobtitle、jobdescription、company\u name。您好,谢谢您的回答。。我已经这样做了,但结果在与工会的相关性方面要好得多。有多列的偏离路线结果会很快出现。与工会的合作结果也不错,但问题是我认为这与指数有关。。每当有新的术语出现在搜索中,都会花费太多的时间。