2009-04-20 59 views

回答

28

其實你應該離開那些dbo。語句,因爲你的SQL會更快,因爲優化不必查找模式

看看這個鏈接也Performance Impact of Procedure Calls without Owner Qualification

+0

但是,這並不意味着如果我必須更改模式,我的所有SQL腳本都會中斷嗎?當然,這些優化器現在足夠聰明,可以猜測我引用了我可能引用的唯一模式...? – MGOwen 2014-07-18 12:00:11

-3

我認爲你連接的用戶必須屬於dbo模式,然後你不必鍵入前綴,它會從用戶所屬的模式中推斷出來。

+3

在SQL 2005及以上,同一用戶可以訪問多個模式。然後怎樣呢? – 2009-04-20 18:54:22

6

它實際上是有益離開DBO。前綴到位 - 畢竟,在SQL Server中,可以有多個具有相同表名的模式(「dbo。」thingie),例如, dbo.MyTable,joe.MyTable,frank.MyTable。

如果您然後發出SELECT(字段列表)FROM MyTable,SQL Server必須首先找出您真正意義上的「MyTable」表中的哪個表 - >這會花費時間,指定您想要的「 dbo.MyTable「將爲您節省時間。

好的,在單個查詢上不是很多 - 但是SELECT查詢是非常頻繁的,並且它們全部相加!

Marc

1

賞金問題並不完全是原來的問題。

當前答案不包含足夠的細節。

沒有一個答案實際上解決了如何刪除 dbo前綴或將其更改爲其他內容的問題。

dbo是模式。您不能從表中刪除模式。你可以改變它。有很多例子。這裏是一個:How do I move a table into a schema in T-SQL

1

就是這樣的,如果所有的表都在dbo架構

use mydatabase 
go 
select * from mytable 

,如果你有多個數據庫,你可以做到這一點:

select * from mydatabase..mytable