Sql-Server
select * 在 SQL Server 2012 上仍然是一個很大的禁忌嗎?
在過去的日子裡,這被認為是一個很大的禁忌,
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
(或其他一些限制性子句)?