数据库读取复杂度
Database read complexity
我在 SQL 中有一个关系 table,它将用户与权限相关联。处于多对多关系中间也是如此。
table 有其正确的索引和外键。
用户属于组,所以我想知道保持组-权限之间的关系而不是用户-权限之间的关系是否会更有效,这样我在 table,所以我想知道性能如何而不是其他方式。
最后我的问题是:在数据库中读取table的复杂度如何?
我很确定它是 "theorically" O(1) 但实际上更像是 O(nlogn) 或 o(n) 因为它必须以某种方式索引数据。
顺便说一下,我正在使用 SQL 服务器数据库管理系统,但我很确定答案适用于 SQL、mySQL 等(不包括非关系数据库管理系统,例如Mongo)
您甚至无法知道 "theoretically" 在数据库中读取 table 的复杂性,因为每个 table 都与另一个不同。
一个可以有 2 列,另一个可以有 200,一个有 10 条记录,另一个可以有 1 亿,一个可以有索引,另一个可以没有和 ETC。
这会影响复杂性,所以每个案例都是如此。
此外,是的,如果您的用户被分成组(并且同一组中的两个人具有相同的权限)那么拥有关系的权利就更大
组 > 权限
用户 > 群组
比你所做的要多,因为如果你想要(而且你可能会)添加或删除一个组权限,在你的情况下它可能会很复杂并且需要不必要的加入和资源,而不是仅仅改变一个权限组.
性能预测,再说一次,我不能告诉你
我在 SQL 中有一个关系 table,它将用户与权限相关联。处于多对多关系中间也是如此。
table 有其正确的索引和外键。
用户属于组,所以我想知道保持组-权限之间的关系而不是用户-权限之间的关系是否会更有效,这样我在 table,所以我想知道性能如何而不是其他方式。
最后我的问题是:在数据库中读取table的复杂度如何?
我很确定它是 "theorically" O(1) 但实际上更像是 O(nlogn) 或 o(n) 因为它必须以某种方式索引数据。
顺便说一下,我正在使用 SQL 服务器数据库管理系统,但我很确定答案适用于 SQL、mySQL 等(不包括非关系数据库管理系统,例如Mongo)
您甚至无法知道 "theoretically" 在数据库中读取 table 的复杂性,因为每个 table 都与另一个不同。
一个可以有 2 列,另一个可以有 200,一个有 10 条记录,另一个可以有 1 亿,一个可以有索引,另一个可以没有和 ETC。
这会影响复杂性,所以每个案例都是如此。
此外,是的,如果您的用户被分成组(并且同一组中的两个人具有相同的权限)那么拥有关系的权利就更大
组 > 权限
用户 > 群组
比你所做的要多,因为如果你想要(而且你可能会)添加或删除一个组权限,在你的情况下它可能会很复杂并且需要不必要的加入和资源,而不是仅仅改变一个权限组.
性能预测,再说一次,我不能告诉你