悬赏分:50 浏览:270 次
|
可否结合一下,第一个字母匹配从数据库读取出来,放入dataset,应该比几十万的数量级小很多吧,然后在dataset中选取当用户输入第2个以及以后的字母的情况
当然,还应该在适当的地方加入缓存处理 楼主是想实现在文本框中输入时内容时的自动完成功能吗?请使用ASP.NET AJAX中的AutoCompleteExtender控件 你可以研究一下常见的词典格式,词典文件一般没有必要用数据库吧。 自动完成功能,网上很多的,Ajax是一种实现方法吧!!! 建议不使用DataSet一次加载全部单词的方法,这样dbs与iis通信量太大,效率上会有损失。如果不使用google suggest,则用户全部输入后,才会触发查询。此时查询,其得到结果应该是可确定的(0个或1个等),这样,dbs与iis之间的通讯很小,且查询只有一次。之前的建议,数据库查询次数都不小于1次。其实,影响速度的问题,主要在与数据库连接花费的时间,只要索引建的好(此处是不是把每个单词列建成了索引?),100万条,查询其中的一条,速度是很快的(远小于1秒)。 |
|
2个月前 李辉明 : TO 麒麟.NET : 问题不在于是否用AJAX的AutoCompleteExtender控件,在于如何让用户查询的速度快。因数据量实在过大。 |
|
2个月前 李辉明 : TO:雨哲 你这种方式,是否每次缓存中没有的数据,都要连接一次SQL?能否有开始就把一堆的词条放在服务器的内存上,这样,用户直接从内存里查询数据出来是否快的多?100W条,一个词条算6个字节,不到11个M。 |
|
2个月前 李辉明 : 我问的不是自动完成功能。问题在于用什么算法或者数据结构,能快速查询。。 |