在SQL中,我正在考虑以下问题。
我有一个A_id列表和一个B_id列表。
- 唯一A_id的数量~ 1.000s
- 唯一B_id的数量~ 1.000.000s
这个想法是,对于每个A_id,我都有一个B_id列表,在这个列表中可能有许多B_id(多对多)。
我可以简单地将它们存储为
| a_id | b_ids |
| 1 | '1,2,3,4,5' |
| 2 | '1,2,4,5' |
| 3 | '1' |
| 4 | '1,2' |
| 5 | '3,4' |
| 6 | '2,3' |
...
然而,我读到了标准化,即。简单地做:
| a_id | b_id |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
| 2 | 1 |
...
是更好的实践,但我担心具有大量行的影响(即1.000.000.000+)
我明白这两种方法的缺点,但什么是更好的权衡?
1条答案
按热度按时间wydwbb8l1#
规范化是要遵循的路线
1.对于现代DBMS来说,这并不是一个特别大的行数
1.由于您将对表进行适当的索引,因此您将只访问表中任何查询实际使用的行,而不是进行全表扫描(除非您的查询需要全表扫描)