DB 项目 - 通过关系提高绩效
我有两个表,我们将它们称为 TableA 和 TableB。表 A 中的一条记录与表 B 中的一条或多条记录相关。但是,对于 TableA 中的每条记录(例如具有最低 ID 的记录),TableB 中也有一个特殊记录,并且我希望能够快速访问该特殊记录。两个表中的数据都不会被删除——这是一种很少被清除的历史记录。就性能而言,如何做到最好?
我想到的是:
1)双向关系,但是会影响插入性能
2)设计下一个表,主键为FK_TableA(对于TableA记录恰好有一个是“特殊”)和第二列FK_TableB,然后创建视图
3)设计下一个表,主键为FK_TableA,FK_TableB,使FK_TableA唯一,然后创建视图
我对所有其他想法持开放态度:)
I have two tables, let's call them TableA and TableB. One record in TableA is related to one or more in TableB. But there's also one special record within them in TableB for each record from TableA (for example with lowest ID), and I want to have quick access to that special one. Data from both tables aren't deleted - it's a kind of history rarely cleared. How do that the best in terms of performance?
I thought of:
1) two-way relationship, but it will affect insert performance
2) design next table, with primary key as FK_TableA (for TableA record exactly one is "special") and second column FK_TableB and then create view
3) design next table, with primary key as FK_TableA, FK_TableB, make FK_TableA unique and then create view
I'm open for all other ideas :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
4)我会考虑使用 索引视图 来隐藏 JOIN 和行限制
这与您的选项 2 和 3 类似,但数据库引擎将为您维护它。使用新表,您要么会损害数据完整性,要么必须通过触发器管理数据
4) I'd consider an indexed view to hide the JOIN and row restriction
This is similar to your options 2 and 3 but the DB engine will maintain it for you. With a new table you'll either compromise data integrity or have to manage the data via triggers