[英]Do I need to put top 1 when using SqlCommand.ExecuteScalar()
如果您只想從數據庫中獲取一行,則無論您是通過ExecuteScalar
還是ExecuteReader
傳送數據,都應該在查詢中放置TOP 1
。
你不應該閱讀源代碼來得出這樣的結論。 實際上,實現方式命令受封裝限制,調用類不應基於命令的確切實現做出決策。
相反,我的想法是數據庫是稀缺資源,應該在數據吞吐量和相關措施方面得到最佳利用。 這包括向數據庫指示只需要一行並完成它。 讓較低層(如命令實現和數據庫本身)了解如何使用該信息以獲得最佳性能。
ExecuteScalar
獲取第一行的第一列值。 因此,如果您將TOP 1
添加到查詢中,它將沒有任何區別。 但是,如果您希望重復值並且需要一個特定值(為了速度),建議添加TOP 1
。 一個這樣合理的場景是,您正在重用一些腳本,該腳本返回一組或多行,其中包含有關特定客戶的客戶信息,前提是您的第一列是CustomerID或任何主鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.