我目前使用的應用程序對其表具有不同的模式名稱,例如Table1可以有多個存在,如A.Table1和B.Table1。我所有的存儲過程都存儲在dbo下。我正在使用動態sql編寫下面的存儲過程。我目前使用的MS SQL Server 2008R2和它很快將被遷移到MS SQL服務器2012R2在sql server中使用動態模式名稱時編寫存儲過程
create procedure dbo.usp_GetDataFromTable1
@schemaname varchar(100),
@userid bigint
as
begin
declare @sql nvarchar(4000)
set @sql='select a.EmailID from '[email protected]+'.Table1 a where [email protected]_id';
exec sp_executesql @sql, N'@user_id bigint', @[email protected]
end
現在我的問題是, 1是這種類型的方法會影響我的存儲過程的性能呢? 2.如果性能受到影響,那麼如何編寫這種場景的程序?
也許你沒有參與設計,但對於2個數據庫來說聽起來像是一個很棒的場景。就我個人而言,我認爲這是一個可怕的想法。當你需要加入兩張桌子時會發生什麼?索引和所有的優化技巧都在窗外。 – Jeremy
@傑里米是的,你是對的。我沒有參與設計。 – tuhin