Sql-Server

select * 在 SQL Server 2012 上仍然是一個很大的禁忌嗎?

  • December 16, 2015

在過去的日子裡,這被認為是一個很大的禁忌,select * from table或者select count(*) from table因為性能受到打擊。

在更高版本的 SQL Server 中是否仍然如此(我使用的是 2012,但我想這個問題適用於 2008 - 2014)?

*編輯:*由於人們似乎在這裡對我略有評價,我從基準/學術的角度來看這個,而不是它是否是“正確”的事情(當然不是)

如果您SELECT COUNT(*) FROM TABLE只返回一行(計數),則相對較輕,並且是獲取該數據的方法。

並且SELECT *不是物理上的禁忌,因為它是合法且允許的。

但是,問題SELECT *在於您可能會導致更多的數據移動​​。您對錶中的每一列進行操作。如果您SELECT只包含幾列,您可能能夠從一個或多個索引中獲得答案,從而減少 I/O 以及對伺服器記憶體的影響。

所以,的,建議不要將其作為一般做法,因為它會浪費您的資源。

唯一真正的好處SELECT *是不鍵入所有列名。但是從 SSMS 中,您可以使用拖放來獲取查詢中的列名並刪除不需要的列名。

**一個類比:**如果有人SELECT *在不需要每一列時使用,當他們不需要每一行時,他們是否也會使用SELECT不帶WHERE(或其他一些限制性子句)?

引用自:https://dba.stackexchange.com/questions/69361