database - SQL Server 2005 - 多个数据库

标签 database sql-server-2005 performance join

我们在工作中使用 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

这样做有什么缺点吗?除了显而易见的是,我们无法跨多个数据库强制执行数据完整性。由于数据可能位于磁盘的完全不同部分,加入时它会减慢速度吗?

我问的原因是因为我们正在重组我们的基础架构,这是一个不断出现的潜在问题。

最佳答案

当前的最佳做法是使用具有多个模式的同一个数据库。每个模式都可以放在自己的文件中,然后可以轻松备份。它还允许您强制执行外键约束。

我们过去像贵公司一样使用多数据库模型,最近我们将所有新开发切换为只使用模式。这样做我们没有损失任何东西,并且获得了执行我们的外键的能力,这是巨大的。

关于database - SQL Server 2005 - 多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202615/

相关文章:

sql - 手动排序 concat 文本(不是 ASC 或 DESC)

sql-server-2005 - 如何在 SQL Server 2005 中撤消删除操作?

sql-server-2005 - SQL 2005维护清理任务.bak文件未删除

sql-server - 将日期/时间转换为日期

MySQL 效率 - 2 个单独的表或连接

php - 使用 WHERE 或 PHP 从 MySQL 过滤数据?

sql - 始终让特定查询的 postgres 查询计划使用索引而不是扫描

php - 这不是 phpMyAdmin 中的数字错误

java - Protocol Buffers 中 getSerializedSize() 的性能损失

java - 当整行为空时如何不将数据放入 map 中