我有一个简单的查询依赖于两个全文索引表,但是当我将CONTAINS与任何其他OR搜索结合使用时,它运行得非常慢.正如执行计划中所见,这两个全文搜索会破坏性能.如果我仅使用CONTAINS中的一个查询,或者两者都不查询,则查询是亚秒级的,但是当您将OR添加到混合中时,查询就会变得不合适.
这两张表没有什么特别之处,它们不是太宽(一个是42个,另一个是21个;可能每个10个列都是FT索引),甚至包含很多记录(两个中最大的36个记录).
我能够通过将两个CONTAINS搜索分成他们自己的SELECT查询来解决性能,然后将这三个UNION一起解决.UNION的解决方案是我唯一的希望吗?
谢谢.
SELECT a.CollectionID
FROM collections a
INNER JOIN determinations b ON a.CollectionID = b.CollectionID
WHERE a.CollrTeam_Text LIKE '%fa%'
OR CONTAINS(a.*, '"*fa*"')
OR CONTAINS(b.*, '"*fa*"')
Run Code Online (Sandbox Code Playgroud)
执行计划(我想在发布图片之前需要更多声誉):http: //yfrog.com/7dslowcontainsj http://desmond.yfrog.com/Himg265/scaled.php?tn=0&server=265&filename=slowcontains.jpg&xsize = 640&YSIZE = 640
sql-server full-text-search full-text-indexing sql-server-2008
首先,我要说我的Oracle知识很少.
我们有一个专有的应用程序,可以将数据存储到Oracle 9.2数据库中.我只使用这个软件,因此Oracle每3个月左右.问题是,似乎由于不活动,我将不得不使用以下命令启动数据库/实例:
conn sys as sysdba
<enter password>
startup
Run Code Online (Sandbox Code Playgroud)
如果我在几周内没有使用服务器,我就不必这样做了.我只是好奇这笔交易是什么?这不是什么大不了的事,但它是我可以解决的问题,还是我想解决它?也许这是安全的事情?这种不活动设置在哪里,如果它是什么?
我最感兴趣的是理解,所以信息越多越好.谢谢!