日期:2014-05-18  浏览次数:20466 次

怎么提高这个很简单的SQL的性能?
语句如下
select   id,Title,Content,Pic   from   UList   where   title   like   '%张学友% '

现在数据库当中的数据有50万条,用的是MSSQL2000,执行上面那个语句,平均用时在2.5秒左右,怎么才能提高执行速度而又不影响搜索结果?
可以说一下对表的优化及其它优化,总之不要说加内存和CPU就可以了(现在是双至强2.8+2G内存)。

谢谢

------解决方案--------------------
charindex或许会好点.
建索引对你这条语句帮助不大
like '%张学友% '
按照以往的经验来看, 这样使用不到索引
如果是like '张学友% ' 这样没问题.
------解决方案--------------------
select id,Title,Content,Pic from UList where title like '%张学友% '

如果title上有索引,那么这条语句是没有使用索引的,效率会很低;

select id,Title,Content,Pic from UList where title like '张学友% '

这样子会使用索引,但是正如你所说,搜索结果并不能满足需求

建议:在title上建立全文索引
------解决方案--------------------

建议使用全文索引
数据量大了,建议不要实时搜索,
1.建议限制将搜索的结果的数量,
2.每次不同条件的搜索结果,用另外表保存起来,如果再次出现相同结果的搜索条件,只需要读保存的数据既可
3.定时清除保存表的数据,以便查询最新的数据,这个根据你自己的需求,5分钟,1小时,1天,都可以。