簡體   English   中英

使用SqlCommand.ExecuteScalar()時是否需要放置前1

[英]Do I need to put top 1 when using SqlCommand.ExecuteScalar()

我已經分析 SqlCommand 的代碼並看到它工作正常(請參閱CompleteExecuteScalar方法)。 但我不確定我應該在查詢中使用top 1 例如,我select name from PersonPerson包含很多記錄。 我應該修改qry select top 1 name from Person嗎? 或者我可以保持qry原樣,它不會影響性能/內存等? 我擔心服務器可以在輸出之前緩沖一些數據。

如果您只想從數據庫中獲取一行,則無論您是通過ExecuteScalar還是ExecuteReader傳送數據,都應該在查詢中放置TOP 1

你不應該閱讀源代碼來得出這樣的結論。 實際上,實現方式命令受封裝限制,調用類不應基於命令的確切實現做出決策。

相反,我的想法是數據庫是稀缺資源,應該在數據吞吐量和相關措施方面得到最佳利用。 這包括向數據庫指示只需要一行並完成它。 讓較低層(如命令實現和數據庫本身)了解如何使用該信息以獲得最佳性能。

ExecuteScalar獲取第一行的第一列值。 因此,如果您將TOP 1添加到查詢中,它將沒有任何區別。 但是,如果您希望重復值並且需要一個特定值(為了速度),建議添加TOP 1 一個這樣合理的場景是,您正在重用一些腳本,該腳本返回一組或多行,其中包含有關特定客戶的客戶信息,前提是您的第一列是CustomerID或任何主鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM