以下是一个信息表的查询分页方式,建立了以PageTime 为聚集索引NewsID为非聚集索引,并将内容建立了全文目录,
首先希望能通过标题like "%搜索内容%" 查询出含有关键字的结果,我发现一个问题,就是某些词检索速度还可以接受3-8秒,某些词like时间就特别的慢20-90秒,我也对新闻内容的字段建立了全文索引目录,可是查询的时间还是不尽如意都是20-90秒之间,请教大家,是否有其他更好的方式能明显提高我的效率,请给出您的见解!!!十分感谢!!!--总数量
WITH tmp1 AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY PageTime DESC)
as RowNumber from (
SELECT NewsID,URL,PageTime,NewsTitle,Source
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
) AS Vocation
)select max(RowNumber ) from tmp1
--获得某页内容
WITH tmp1 AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY PageTime DESC)
as RowNumber from (
SELECT NewsID,URL,PageTime,NewsTitle,Source
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
) AS Vocation
)select * from tmp1 where RowNumber between 16 and 30
首先希望能通过标题like "%搜索内容%" 查询出含有关键字的结果,我发现一个问题,就是某些词检索速度还可以接受3-8秒,某些词like时间就特别的慢20-90秒,我也对新闻内容的字段建立了全文索引目录,可是查询的时间还是不尽如意都是20-90秒之间,请教大家,是否有其他更好的方式能明显提高我的效率,请给出您的见解!!!十分感谢!!!--总数量
WITH tmp1 AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY PageTime DESC)
as RowNumber from (
SELECT NewsID,URL,PageTime,NewsTitle,Source
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
) AS Vocation
)select max(RowNumber ) from tmp1
--获得某页内容
WITH tmp1 AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY PageTime DESC)
as RowNumber from (
SELECT NewsID,URL,PageTime,NewsTitle,Source
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
) AS Vocation
)select * from tmp1 where RowNumber between 16 and 30
解决方案 »
- 调用存储过程分页问题?
- js怎样遍历GridView中的textbox的值
- 如何在分页前把数据导入excel中?
- 刚学做留言本,不会写login,有没有人能教我啊
- 如何控制下载权限?必须登录后能下载,登录后找到下载连接,下次不登录也能下载这种情况如何避免?
- 困惑~~困惑~~还是困惑~! COME IN PLAESE!!!!!!!!!!
- 哪里有asp.net 和 c# 结合的书? 紧急求救!我找了几本书里面的实例都是用vb.net写的!
- asp中如何取得用户控件的值?
- ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆ 问一个概念 ★☆★☆★☆★☆★☆★☆★☆★☆★☆
- 不能调试 说没有同坐windows认证 郁闷 怎么办 急求救!!!?
- 能不能使用TextBox的OnTextChange事件实现下面功能,如果不能实现,给出解决办法
- OnClientClick传url参数,该如何动态传
select top 15.... Where RowNumber >=16
另外,使用全文索引的查询,要用 CONTAINS 关键字才能利用全文索引.
这方面的例子,网上很多,比如:
http://nyazheng.blog.163.com/blog/static/5712646520090191312630/
WITH tmp1 AS (
SELECT *, ROW_NUMBER() OVER(ORDER BY PageTime DESC)
as RowNumber from (
SELECT NewsID,URL,PageTime,NewsTitle,Source
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
) AS Vocation
)select max(RowNumber ) from tmp1那你觉不觉得你这样写很颓废呢select count(1) From Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'
FROM Vocation WHERE 1=1 and NewsTitle like '%动物疫苗%'
AND PageTime >= '2011-01-02'
AND PageTime <= '2011-11-30'> 这里也加上 Orderby <
但你如果不用contains,那你的全文索引等于没建.不过用全文索引也不是很快.好一些的办法,是在表中建一个索引词典,将一些你认为会常用的检索词放到词典里,将词条与表中的记录编号相匹配,这样,在查询时先查词典,如果有的话,再由记录编号去获得表中的记录.当然,这只适用于小系统.