Dynamic 性能-用于搜索数据的用户定义查询/筛选器

Dynamic 性能-用于搜索数据的用户定义查询/筛选器,dynamic,filter,criteria,user-defined,Dynamic,Filter,Criteria,User Defined,设计一个用户可以创建自己的标准来搜索数据的系统的最佳方法是什么?“设计”是指数据存储、数据访问层和搜索结构 实际上,我们将重构一个用C#和ASP.NET编写的现有应用程序,我们不想改变基础结构。我们的主要问题是性能,我们使用MSSQL和DevExpress构建查询。有些查询在4-5分钟内运行,查询中包含的所有列都有索引 当我检查查询时,我发现DevExpress构建了太多的“exists”子句,我对此不满意,因为我怀疑这些查询中的一些会跳过一些索引 DevExpress的替代方案是什么?NHib

设计一个用户可以创建自己的标准来搜索数据的系统的最佳方法是什么?“设计”是指数据存储、数据访问层和搜索结构

实际上,我们将重构一个用C#和ASP.NET编写的现有应用程序,我们不想改变基础结构。我们的主要问题是性能,我们使用MSSQL和DevExpress构建查询。有些查询在4-5分钟内运行,查询中包含的所有列都有索引

当我检查查询时,我发现DevExpress构建了太多的“exists”子句,我对此不满意,因为我怀疑这些查询中的一些会跳过一些索引

DevExpress的替代方案是什么?NHibernate还是实体框架?我们可以建立动态标准系统并将它们存储到数据库中吗


此外,我们还需要任何替代存储,如lucene索引或OLAP数据库吗?

这个问题以前被问过,包括


问题是,如果您的查询现在需要4-5分钟,那么想象一下,当用户自己创建查询时,它们的运行速度会快多少(/sarcasm)。我建议您组合一些预定义的、经过良好调整的查询,并允许用户添加参数或过滤器,但不要让他们滚动自己的查询。你会后悔的,不仅仅是因为性能原因,还因为他们不知道如何正确地限制他们的查询,他们会得到错误的答案。

我想我不能很好地解释结构。首先,那些慢查询已经是用户定义的,我的意思是我们现在有了这个功能。其次,用户不知道任何表或列名。用户定义的标准是特定于领域的,比如:“我想看到用‘汽车’标记的主题,也用‘宝马’标记的主题,还有(分类为‘汽车’或‘生活方式’)和(在14个月内输入),但我认为你指出的答案是有意义的。