Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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 带筛选的MS SQL产品列表_Asp.net_Sql Server_Ajax_Vb.net - Fatal编程技术网

Asp.net 带筛选的MS SQL产品列表

Asp.net 带筛选的MS SQL产品列表,asp.net,sql-server,ajax,vb.net,Asp.net,Sql Server,Ajax,Vb.net,我正在用ASP.NET(VB)和MS SQL数据库构建一个应用程序。它是一个汽车搜索工具,包含每辆汽车及其所有属性(颜色、车门、汽油消耗、制造年份等)的列表。该工具在gridview中输出结果,用户能够执行高级搜索和过滤。过滤需要非常细粒度(气体稀释范围、颜色、制造年份范围等),如果没有将极大影响SQL性能和页面负载的大型SQL where语句,我似乎找不到执行此过滤的最佳方法。我觉得我错过了一些很明显的东西,谢谢你的帮助。我不确定还有什么其他细节会有帮助。这不是您正在构建的OLTP数据库——它

我正在用ASP.NET(VB)和MS SQL数据库构建一个应用程序。它是一个汽车搜索工具,包含每辆汽车及其所有属性(颜色、车门、汽油消耗、制造年份等)的列表。该工具在gridview中输出结果,用户能够执行高级搜索和过滤。过滤需要非常细粒度(气体稀释范围、颜色、制造年份范围等),如果没有将极大影响SQL性能和页面负载的大型SQL where语句,我似乎找不到执行此过滤的最佳方法。我觉得我错过了一些很明显的东西,谢谢你的帮助。我不确定还有什么其他细节会有帮助。

这不是您正在构建的OLTP数据库——它实际上是一个分析数据库。真的没有办法解决必须过滤的问题。问题是数据的组织是否允许大部分时间搜索,还是需要扫描;以及结果连接是否可以有效地完成

我的建议是继续创建规范化的数据,就像您正在做的那样。然后,构建一个流程,将其旋转到数据仓库中,根据需要进行疯狂的非规范化,这样您就可以通过
WHERE
子句进行过滤,而这些子句需要做的工作要少得多

对于每个可能的搜索结果,表中都有一行不需要连接到其他表(或只有少数事实表)

对于某些值,例如汽油里程,您可以通过将里程分为(比如)5英里/加仑的区间来稍微降低复杂性。(10-19、20-24、25-29等)

当您需要添加和更改数据时,您的数据仓库加载过程(可能每天运行一次)将使数据仓库保持最新。如果您希望更频繁地加载而不使客户端脱机,则可以将数据仓库构建到备用节点,然后将其交换出去。比如说,建造需要2个小时。您需要花2个小时构建一个新数据库,然后交换到新数据库,而您的所有数据只有2个小时。然后清除旧数据库并使用空间再次执行此操作