Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何提高asp.net AJAX自动完成性能_Asp.net_Ajax_Active Directory_Lucene_Lucene.net - Fatal编程技术网

如何提高asp.net AJAX自动完成性能

如何提高asp.net AJAX自动完成性能,asp.net,ajax,active-directory,lucene,lucene.net,Asp.net,Ajax,Active Directory,Lucene,Lucene.net,我的网站有城市、州和邮政编码自动完成功能 如果用户在文本框中键入一个城市的3个字符,则会显示以这些字符开头的前20个城市。 到目前为止,我们应用程序中的Autocomplete方法查询sql 2005数据库,该数据库有大约900000条与城市、州和邮政相关的记录 但是显示城市列表的响应时间似乎非常缓慢 因此,对于性能优化,将位置数据存储到Lucene索引中,或者存储在Active directory中,然后从中提取数据是一个好主意吗 Lucene和Activedirectory哪一个会更快?它们

我的网站有城市、州和邮政编码自动完成功能

如果用户在文本框中键入一个城市的3个字符,则会显示以这些字符开头的前20个城市。 到目前为止,我们应用程序中的Autocomplete方法查询sql 2005数据库,该数据库有大约900000条与城市、州和邮政相关的记录

但是显示城市列表的响应时间似乎非常缓慢

因此,对于性能优化,将位置数据存储到Lucene索引中,或者存储在Active directory中,然后从中提取数据是一个好主意吗

Lucene和Activedirectory哪一个会更快?它们各自的优点和缺点是什么?请给出建议

非常感谢

选择核选项(如更改备份数据存储)可能不应该是第一个选项。相反,您需要了解查询执行如此缓慢的原因。首先,我将查看SQL Profiler中的查询性能和SQL Management Studio中的执行计划,看看是否缺少索引之类的愚蠢内容。覆盖该角度后,检查web层,确保没有发送过多的数据或在工作中抛掷扳手。一旦你确定你没有在db或电线上自杀,那么是时候考虑重新设计了

顺便说一句,我的钱将花在Sql Server上,它比这两个选项中的任何一个都能更好地处理此任务的数据端。Lucene更适合全文搜索,而AD充其量只是一个糟糕的数据库。

选择核心选项(如更改备份数据存储)可能不应该是第一个选项。相反,您需要了解查询执行如此缓慢的原因。首先,我将查看SQL Profiler中的查询性能和SQL Management Studio中的执行计划,看看是否缺少索引之类的愚蠢内容。覆盖该角度后,检查web层,确保没有发送过多的数据或在工作中抛掷扳手。一旦你确定你没有在db或电线上自杀,那么是时候考虑重新设计了


顺便说一句,我的钱将花在Sql Server上,它比这两个选项中的任何一个都能更好地处理此任务的数据端。Lucene更适合全文搜索,而AD充其量只是一个糟糕的数据库。

我会将数据缓存到一个单独的表中。根据您需要数据的新鲜程度,您可以根据需要随时重建数据

--Create the table
SELECT DISTINCT city, state, zip INTO myCacheTable FROM theRealTable

--Rebuild the table anytime
TRUNCATE TABLE myCacheTable
INSERT INTO myCacheTable (city, state, zip) SELECT DISTINCT city, state, zip FROM theRealTable

您的AJAX调用可以访问myCacheTable,它的行数将远少于900k。

我将把数据缓存到一个单独的表中。根据您需要数据的新鲜程度,您可以根据需要随时重建数据

--Create the table
SELECT DISTINCT city, state, zip INTO myCacheTable FROM theRealTable

--Rebuild the table anytime
TRUNCATE TABLE myCacheTable
INSERT INTO myCacheTable (city, state, zip) SELECT DISTINCT city, state, zip FROM theRealTable

您的AJAX调用可以访问myCacheTable,而myCacheTable的行数将远少于900k。

再加上Wyatt所说的,您首先需要弄清楚哪个区域速度慢?浏览器和服务器之间的SQL查询速度慢还是网络连接速度慢?还是有别的事


我完全同意怀亚特的观点,SQL Server比Lucene和Active Directory更适合完成这项任务

再加上怀亚特所说的,你首先需要弄清楚哪个区域的速度慢?浏览器和服务器之间的SQL查询速度慢还是网络连接速度慢?还是有别的事


我完全同意怀亚特的观点,SQL Server比Lucene和Active Directory更适合完成这项任务

您好…感谢您的评论…您能详细说明一下为什么Active directory是一个糟糕的数据库吗?因为Active directory是用来存储分层数据的,并不是真正致力于在最短的时间内从数千条记录中找到一条记录。嗨…谢谢你的评论…你能详细解释一下为什么Active directory是一个糟糕的数据库吗?因为Active directory是用来存储分层数据的,并不是真正致力于在最短的时间内从数千条记录中找到一条记录。