【发布时间】:2011-05-15 11:12:22
【问题描述】:
鉴于多个架构中的数百个数据库表,在创建存储过程和视图时,您会建议使用别名/同义词还是完全限定名称?给定几个这样的schema.table,
Orders.OrderHeader, Production.LineThroughput, Sales.Opportunities
我预计使用限定名称会稍微提高性能,但如果必须将诸如 Orders.Customers 之类的表移动到 Sales.Customers,我要么必须更改引用 Orders.Customers 的现有视图/过程,要么使用提前预期会采取此类行动的同义词。我看到了使用同义词将代码移动到测试中的价值,但同时我也可以创建我的生产环境的副本来测试/开发而不需要同义词。
SQL Server Books Online 建议始终使用完全限定名称。有朋友建议为数百个表中的每一个创建一个同义词,并且只使用同义词。虽然我更喜欢使用完全限定名称(更具可读性和不言自明的代码,知道什么被引用的对象属于什么模式,以及键入 schema.table 的习惯),但您观察到了哪些显着的性能、操作或可读性(缺点)优势使用同义词与完全限定的表名?
【问题讨论】:
-
取决于代码在环境中迁移的方式可能会影响使用完全限定名称 - 硬编码模式名称中包含“DEV”,然后将它们移动到“PRD”要求“搜索/替换” “噩梦。
标签: sql sql-server database oracle db2