将层次结构信息存储在 MS Access 数据库中以加快查询速度
store hierarchy information in a MS Access DB for faster queries
我想弄清楚如何在 MS Access 数据库中存储分层类型信息,以便查询更快。用例示例可能更有意义。
- 我有一个 table 有两个字段
- 一个名字
- 层次结构
- 层次结构是 X # 级文件夹结构:
\a\b\c\d
\a\b\c\d\e
\a\b\c\d\f\g
\a\b\h
\a\b\i\j
- 你明白了
- table 将填充 300,000 行
- 每一行都有一个名称和一个层次结构
此时:
- 如果我想查找层次结构中的所有名称,包括子层次结构,我可以 运行 类似的查询:
where [hierarchy] like '\a\b\*'
- 我什至可以进行通配符连接,即使 MS Access 的查询设计 GUI 无法处理它并且我必须使用 SQL 视图:
join on [hierarchy] like '\a\b\*'
。
但它可能会很慢。特别是如果我的连接变得复杂。
所以我想也许有一种方法可以创建另一个 table,它将包含所有层次结构,并且它将保持 parent/child 关系,第一个 table 将引用其中的一行.然后,不知何故,我可以使用它在第一个 table 中查找与第二个 table.
中的层次结构和子层次结构匹配的行
但是,我不知道这是否可能以及我将如何去做。任何建议表示赞赏。
在 Oracle 中,我们使用层次结构,其中每一行都有对其父行的引用。然后使用 CONNECT BY 子句,您可以将这些行彼此连接起来。
你应该看看这里:simulation of connect-by in sql-server
我想弄清楚如何在 MS Access 数据库中存储分层类型信息,以便查询更快。用例示例可能更有意义。
- 我有一个 table 有两个字段
- 一个名字
- 层次结构
- 层次结构是 X # 级文件夹结构:
\a\b\c\d
\a\b\c\d\e
\a\b\c\d\f\g
\a\b\h
\a\b\i\j
- 你明白了
- table 将填充 300,000 行
- 每一行都有一个名称和一个层次结构
此时:
- 如果我想查找层次结构中的所有名称,包括子层次结构,我可以 运行 类似的查询:
where [hierarchy] like '\a\b\*'
- 我什至可以进行通配符连接,即使 MS Access 的查询设计 GUI 无法处理它并且我必须使用 SQL 视图:
join on [hierarchy] like '\a\b\*'
。
但它可能会很慢。特别是如果我的连接变得复杂。
所以我想也许有一种方法可以创建另一个 table,它将包含所有层次结构,并且它将保持 parent/child 关系,第一个 table 将引用其中的一行.然后,不知何故,我可以使用它在第一个 table 中查找与第二个 table.
中的层次结构和子层次结构匹配的行但是,我不知道这是否可能以及我将如何去做。任何建议表示赞赏。
在 Oracle 中,我们使用层次结构,其中每一行都有对其父行的引用。然后使用 CONNECT BY 子句,您可以将这些行彼此连接起来。
你应该看看这里:simulation of connect-by in sql-server