我有这样一个用例:
3表:Customers
,Users
,Contacts
。每个客户可能有大约10,000个用户。
每个用户大约有15000个联系人。我希望在contacts表中存储每个用户的15,000个联系人。但是,在只有一个客户的情况下,这将使我设置为1.5亿行。如果我有100个客户呢?
我知道分区表可能有帮助,但是有更好的选择吗?什么是最好的解决方案来存储这么多的数据,并使其在之后可用(Select, Insert查询要优化)。
谢谢!
您所提到的行数不需要任何特殊的表设计。
为了保持良好的性能,除非绝对需要,否则避免像TEXT、LONGTEXT这样的大对象列数据类型。请使用NVARCHAR(255)或任何在您的应用程序中最有意义的方法。
您的表需要正确的索引来获得最佳性能。要查找这些索引,在向表中至少填充了一些数据之后,可以使用SSMS:在SSMS中运行查询之前,在查询面板中右键单击并选择Show Actual Execution Plan。然后运行查询。SSMS有时会在执行计划的顶部为查询建议一个索引。
如果不知道最常用的查询是什么,就不可能猜出正确的索引。有一件事是肯定的:在许多列上添加单列索引可能没有帮助。
随着SQL应用程序(如您的应用程序)的增长和添加用户,表也会增长。而且,随着表的增长,它们通常需要新的索引。向生产中的应用程序添加或更改索引是完全正常的。在100K行时重新访问索引,然后在100万行、1000万行时再次访问,以此类推。