模糊搜索中多个字段排序效率问题
id 聚合
title 非聚合
Level(等级,int) 非聚合
光是
select Top 10 * from Table where title like '% 关键字 % ' order by id desc
很快的
但是现按等级,在按加入时间排序就很慢了,而且cup占用到80%左右
select Top 10 * from Table where title like '% 关键字 % ' order by level desc, id desc
而且我是用存储过程写的,
不只有什么有效的办法
------解决方案--------------------将like换成charindex()
USE pubs
GO
SELECT CHARINDEX( 'wondrous ', notes)
FROM titles
WHERE title_id= 'TC3218 '
GO
------解决方案--------------------select Top 10 * from Table where title like '% 关键字 % ' order by id desc
select Top 10 * from Table where title like '% 关键字 % ' order by level desc, id desc
单单比较这2句,第二句速度明显慢了,应该是按照level排序造成的,看看执行计划,是不是id的聚集索引被覆盖了没有被使用,level字段建立聚集索引可以么?
------解决方案--------------------颠倒一下呢 如果你level出现频率高 就会影响索引速度
------解决方案--------------------你有没有在level上单独建一个索引
------解决方案--------------------有联合索引,不过感觉这种情况没必要加索引了,level上面不必加索引
------解决方案--------------------或是在level id,两个字段上建一个组合索引
------解决方案--------------------create clustered index index_name on tb_name
(
level ,id
)
------解决方案--------------------帮你顶下 偶也很关注这个问题
你试试把level索引变成level,id一组得 依然是非聚集得
------解决方案--------------------create index ix on tb_name(title,level ,id)