我正在使用一种架构,该架构需要将大型(静态)表与非常频繁更改的数据相结合。
为了强调这一点,想象一下 SO 网站用户访问内部加入了他们的用户数据库)。
SELECT * FROM UserProfile INNER JOIN OnlineUser (on UserProfiles.id = OnlineUser.id)
其中 UserProfile 位于一个大型 SQL 表中,而 OnlineUser 是 Web 服务器上的动态数据。
将所有内容都放入内存会占用大量空间,并且将所有内容都放入数据库中确实会给服务器带来负担(想到它就不寒而栗)。有没有更好的方法来做到这一点?
上帝Jon Skeet说LINQ 无法处理内存中集合和数据库表之间的连接。他建议使用包含子句或列表,在这种情况下两者都不合适。
编辑:
SQL Server 中的内存表 (PINTABLE) 可以做到这一点。由于该功能已被弃用,是否可以假设 SQL Server 2008 会设法将其保存在内存中以减少 IO?