首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

模糊搜索中多个字段排序效率有关问题

2012-01-08 
模糊搜索中多个字段排序效率问题id聚合title非聚合Level(等级,int)非聚合光是selectTop10*fromTablewheret

模糊搜索中多个字段排序效率问题
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)

热点排行