SQL SERVER 查询FULLTEXT的一个奇怪问题

ltaixxx 2017-11-10 02:49:36
数据库共有2000多W条数据。在title 字段上启用了全文索引,在date上启用了非聚集索引,那么问题来了,我在搜索title是出现了这个问题:
首先,如果我只用FULLTEXT查询的话,速度杠杠的,只耗时100来ms, 但业务需求,需要在加上时间段的条件,耗时飙升到30多秒

怎么解?
select title,dtime from MContent WITH(NOLOCK) where contains(title,'大于')
--只耗时100多毫秒

select title,dtime from MContent WITH(NOLOCK) where contains(title,'大于') and dtime >='2017-11-01' and dtime <=''2017-11-10
--耗时30多秒



求高手
...全文
343 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2017-11-13
  • 打赏
  • 举报
回复
用刚才的变形指令,需要在 dtime 索引上 include 主键
文盲老顾 2017-11-13
  • 打赏
  • 举报
回复

select a.title,b.dtime from MContent a WITH(NOLOCK) 
inner join (select id,dtime from MContent where dtime between '2017-11-1' and '2017-11-10') b on a.id=b.id
where contains(title,'大于') 
试着变形看看
OwenZeng_DBA 2017-11-13
  • 打赏
  • 举报
回复
另外你可以尝试,dtime索引上面加上包含列title 然后试试
OwenZeng_DBA 2017-11-12
  • 打赏
  • 举报
回复
用临时表应该可以,查出来的数据量不大
  • 打赏
  • 举报
回复
如果是date类型就convert吧
select title,dtime from MContent WITH(NOLOCK) where contains(title,'大于')  and convert(char(8),dtime,112) between '20171101' and '20171110'
  • 打赏
  • 举报
回复
可以在日期字段上做个运算 来 强制 不使用 日期字段索引 select title,dtime from MContent WITH(NOLOCK) where contains(title,'大于') and dtime+0 >='2017-11-01' and dtime+ <=''2017-11-10
听雨停了 2017-11-10
  • 打赏
  • 举报
回复
引用 3 楼 听雨停了的回复:
[quote=引用 2 楼 ltaixxx的回复:]一样的,2个条件因为都用了索引, 所以单独执行 都效率非常高, 但组合在一起就扑街了 .... 不知道啥原因
有一个办法可能可以行,你说分开执行都很快,你可以把第一个使用全文索引的查询结果插入一个临时表,然后在这个临时表的日期字段上建立一个非聚集索引,然后再根据日期查询这个临时表。[/quote] 具体行不行不知道哈,你得试试看哈
听雨停了 2017-11-10
  • 打赏
  • 举报
回复
引用 2 楼 ltaixxx的回复:
一样的,2个条件因为都用了索引, 所以单独执行 都效率非常高, 但组合在一起就扑街了 .... 不知道啥原因
有一个办法可能可以行,你说分开执行都很快,你可以把第一个使用全文索引的查询结果插入一个临时表,然后在这个临时表的日期字段上建立一个非聚集索引,然后再根据日期查询这个临时表。
ltaixxx 2017-11-10
  • 打赏
  • 举报
回复
一样的,2个条件因为都用了索引, 所以单独执行 都效率非常高, 但组合在一起就扑街了 .... 不知道啥原因
听雨停了 2017-11-10
  • 打赏
  • 举报
回复

WITH cte AS (
select title,dtime from MContent WITH(NOLOCK) where contains(title,'大于')
)
SELECT * FROM cte WHERE dtime >='2017-11-01' and dtime <='2017-11-10'
把这分开两步执行不知道行不行啊

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧