数据库优化

时间:2018-08-13 02:56:25

标签: sql query-optimization

我正在启动一个Web应用程序,该应用程序将被许多公司(超过2万家)使用,最重要的是每天都会记录很多信息。我想就以下想法提出您的建议:为每个公司创建一个数据库来执行如下SQL查询:

select * from enterprisedb1.tablename;
select * from enterprisedb2.tablename2 where enterprisedb2.tablename2.col='foo'

请给我个建议,我在Google上找不到任何东西

2 个答案:

答案 0 :(得分:2)

如果将其出售给多个客户,则可能归结为他们的数据分离。

一方面,该应用程序的所有内容都在每个客户端的一个数据库中,并且只要您正确获得了连接字符串,就可能无需为该应用程序的其余部分再次指定公司名称。每个查询不再有“ where customer = 123”。

这也意味着可以完全独立地删除,备份,移动,审核客户端。

这也意味着不存在开发人员或查询意外执行跨客户端操作的风险。因此,您甚至可以打开仍无法意外跨越客户端到客户端边界的通用查询访问权限。而且安全设置将更加简单。

但是,如果您有一百万个客户,那么最终您会得到很多个数据库。效果如何取决于各种因素,包括您选择的数据库。

除非您另外创建一个“公共”数据库或类似的数据库,否则您最终还将拥有参考数据的多个副本。

这将是一个非常“依赖”的答案,但这是需要考虑的几件事。

答案 1 :(得分:1)

我建议为每个公司使用通用表。更好地管理和易于理解。
创建一个用于公司数据的表,并在另一个气象数据表中使用该键的整数引用。为了获得更好的性能,索引和查询必须格式正确。