jfr*_*how 1 database performance join sql-server-2005
我们正在使用SQL Server 2005,在开发时,决定创建多个数据库.例如,我们有一个数据库用于个人说dbIndividual,另一个数据库用于翻译说dbLocale.
到目前为止,这已经简化了备份和潜在的恢复,因为我们只需要备份我们需要的东西(除非有一种方法来备份/恢复我们不知道的模式.)
这导致我们在多个数据库表和文件上使用JOINS进行多次查询.
例如:
select customer.firstname, address.addressL1, addressType.value
from dbIndividual.dbo.customer
inner join dbIndividual.dbo.address
on fkCustomerID = iCustomerID
inner join dbLocale.translation.addressType
on fkAddressTypeID = iAddressTypeID
and fkLangID = 1
Run Code Online (Sandbox Code Playgroud)
这有什么缺点吗?除此之外,我们无法跨多个数据库强制实施数据完整性.加入时是否会减慢速度,因为数据可能位于磁盘的完全不同的部分?
我要问的原因是因为我们正在重组我们的基础设施,这是一个不断涌现的潜在问题.
当前的最佳实践是使用具有多个模式的相同数据库.每个模式都可以放在自己的文件中,然后可以轻松备份.它还允许您强制执行外键约束.
我们过去常常使用像您公司一样的多数据库模型,最近我们将所有新开发都改为使用模式.我们没有丢失任何东西,并且已经获得了执行我们的外键的能力,这是巨大的.