【发布时间】:2010-03-15 14:27:25
【问题描述】:
我正在考虑构建一个允许使用分层过滤查询数据的设施。我有一些想法,但我想知道是否有任何建议或建议可能更有效。
例如,假设用户正在搜索工作。工作领域如下。
1: Scotland
2: --- West Central
3: ------ Glasgow
4: ------ Etc
5: --- North East
6: ------ Ayrshire
7: ------ Etc
用户可以搜索特定的(即格拉斯哥)或更大的区域(即苏格兰)。
我正在考虑的两种方法是:
- 为每条记录记下数据库中的子项(即 cat 1 在其子项字段中有 2、3、4)并使用
SELECT * FROM Jobs WHERE Category IN Areas.childrenField查询该记录。 - 使用递归函数查找与所选区域相关的所有结果。
我从两者中看到的问题是:
- 将这些数据保存在数据库中意味着必须跟踪结构的所有更改。
- 递归速度慢且效率低。
关于最佳方法的任何想法、建议或建议?我正在使用 C# ASP.NET 和 MSSQL 2005 DB。
【问题讨论】:
-
如果您的表结构支持,您可以进行递归查询:msdn.microsoft.com/en-us/library/ms186243.aspx
-
您是否考虑过在 XML 中建模您的信息并将其存储在一个 XML 属性中(在数据库表上),以便您可以使用 XQuery 对其进行查询?
标签: c# asp.net sql-server-2005 recursive-query