@@@@@:如何提高模糊查询速度(在线等)

weiyong922 2007-04-16 11:39:05
表里应该有百万条数据,因为是模糊查询,用存储过程实现的分页查询每次都需要4秒钟左右,怎样能像百度MP3那样用时能在几十毫秒之内呢?
有人指点用缓存的技术实现,可我的水平确实无法具体实现,望高手再详细指点一二,因我刚做ASP.NET才半年多,水平的低下望包涵,如果无法完成,估计也只有走人了!
...全文
618 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
kason_j 2007-04-16
  • 打赏
  • 举报
回复
有情帮顶
lxs5i5j 2007-04-16
  • 打赏
  • 举报
回复
长知识 了
oldmoon 2007-04-16
  • 打赏
  • 举报
回复
用SQL Server带的全文检索会快点,具体参见联机帮助
hy_lihuan 2007-04-16
  • 打赏
  • 举报
回复
有一些是可以使用技术来提高的,有一些是要使用技巧来避免的;
比如你要查询的数据和时间相关,那就尽量减少长久历史数据的查询;默认时间段来减少检索数据量;
比如你的数据分类别的,那就尽量缩小类别范围;
这些都无法避免的,那就使用进度条!提示检索大致时间;
cpp2017 2007-04-16
  • 打赏
  • 举报
回复
另:如果数据量比较大,字段内容也比较大,可考虑用全文索引. 如:文章内容的查找==
Aricc 2007-04-16
  • 打赏
  • 举报
回复
长知识 了
weiyong922 2007-04-16
  • 打赏
  • 举报
回复
不要沉呀
shrinerain 2007-04-16
  • 打赏
  • 举报
回复
Baidu,Google并不是用的商用数据库.

那是自己的文件系统.
weiyong922 2007-04-16
  • 打赏
  • 举报
回复
我是LZ,谢谢上面的各位,我也觉得用%这样去匹配查询的速度不可能快到哪里,用索引也用了,没见什么效果,所以想用缓存吧,可这方面确实不会,好不容易在网上找了一个,以为就第一次调用会费时,可我用的反而每次都要用几十分钟,根本没效果,所以还是不会弄呀,能有这方面的指点吗

-------附我写的缓存的方法-----
public DataTable CacheAllSongInfo()
{

DataTable dtList = (DataTable)HttpContext.Current.Cache.Get("caAllSong");
MyDAL.SongInfo songinfo=new SongInfo();
if (dtList == null)
{
lock (this)
{

dtList = songinfo.GetSongInfoAll(); //得到表里的一百万条数据

//建立回调委托的一个实例
CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(onRemove);

HttpContext.Current.Cache.Insert("caAllSong", dtList, null,
System.DateTime.Now.AddHours(6),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,
callBack);
}
}

return dtList;

}
sbqcel 2007-04-16
  • 打赏
  • 举报
回复
楼主要是不知到怎么用那2个函数可以在SQL联机丛书里看看
另外可以建索引,这个很好噢
fupingtamq 2007-04-16
  • 打赏
  • 举报
回复
如: patindex('%en%',字段名)>0
hertcloud 2007-04-16
  • 打赏
  • 举报
回复
对于你 查询的条件列 建立索引
fupingtamq 2007-04-16
  • 打赏
  • 举报
回复
CHARINDEX 和 PATINDEX是函数
bwangel 2007-04-16
  • 打赏
  • 举报
回复
查询开头匹配的总比查中间匹配的速度肯定快得多,而且可以利用索引.

要实现快速的模糊查询,你必须建立全文索引.具体看帮助.
weiyong922 2007-04-16
  • 打赏
  • 举报
回复
少用%?
---------
可怎样实现模糊查询呢
jimu8130 2007-04-16
  • 打赏
  • 举报
回复
对于查询,特别是大的数据量的查询,简单一点的就是人为的添加一些条件,这样可以减小查询范围,提高速度。

上面提到少用%,我也提个尽量不用in。
weiyong922 2007-04-16
  • 打赏
  • 举报
回复
CHARINDEX 和 PATINDEX?
--------------
是指索引吗
sbqcel 2007-04-16
  • 打赏
  • 举报
回复
尽量使用CHARINDEX 和 PATINDEX,少用%
具体使用查联机帮助
babyuse 2007-04-16
  • 打赏
  • 举报
回复
可以参考下lucene,是个开源搜索引擎,也是通过索引
zhulei2008 2007-04-16
  • 打赏
  • 举报
回复
建立索引
加载更多回复(14)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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