有沒有人知道IN子句的表達式列表(可以測試匹配項)中可以有多少值的限制?Sql Server中的「IN」子句限制
回答
是一些方法,有一個限制,但是MSDN only specifies that it lies "in the thousands":
Including an extremely large number of values (many thousands) in an IN clause can consume resources and return errors 8623 or 8632. To work around this problem, store the items in the IN list in a table.
看看這些錯誤的細節,我們看到,這個限制不是針對IN
但一般應用於查詢的複雜性:
Error 8623:
The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.
Error 8632:
Internal error: An expression services limit has been reached. Please look for potentially complex expressions in your query, and try to simplify them.
根據您使用的數據庫引擎,指令長度可能有限制。
SQL Server有一個非常大的限制:
Maximum Capacity Specifications for SQL Server
因此,對於大IN子句,最好創建一個臨時表,插入值,做一個JOIN。它的工作速度也更快。
有一個限度,但你可以在你的價值觀分成單獨的塊()
Select *
From table
Where Col IN (123,123,222,....)
or Col IN (456,878,888,....)
使用2008表值參數,或者在這裏描述
這是不特定的,但相關的查詢計劃產生超過內存限制。我可以證實,幾千上萬,經常出錯,但可以通過先插入值到一個表來解決,在這裏你的條款是在表C所需的值改寫查詢作爲
select * from b where z in (select z from c)
。我們成功地使用了一個1百萬個值的in子句。
取決於你如何執行查詢(JDBC,的Hiberante,某種SQL-GUI)和使用的,而不是一個子查詢where X in (1, 2, 3...)
文字值的時候 - 你也可能會遇到以下錯誤:
Too many parameters were provided in this RPC request. The maximum is 2100.
因此,在這些情況下,限制將會是2100(或者在其他參數存在的情況下甚至更少)。
- 1. SQL Server IN子句
- 2. SQL IN語句的限制
- 3. Sql Server IN子句問題
- 4. Oracle IN子句限制
- 5. IN子句中的值限制Oracle
- 6. 「where in」子句的實際限制
- 7. 在SQL Server中使用IN子句
- 8. Sql Server - 在Aggregate IN子句中加入
- 9. netezza表的IN子句有限制嗎?
- 10. SQL Server Where子句使用In()vs Wildcard
- 11. Sql server CASE和IN where子句
- 12. 在SQL SERVER中使用IN子句的CASE語句
- 13. SQL ALL IN子句
- 14. FLinq SQL「IN子句」
- 15. SQL IN子句RegEx
- 16. SQL IN子句值
- 17. SQL NOT IN子句
- 18. 對exec語句的SQL Server 2008限制
- 19. 如何在Sql Server中使用IN caluse中的LIKE子句?
- 20. 帶IN子句的SQL Server語句:如何使它們更快?
- 21. SQL Server:使用元組IN多重連接IN子句
- 22. Neo4j Cypher - 查詢中「in」子句的限制
- 23. 「IN」子句的SQL對應
- 24. 通過逗號deligma字符串IN子句中的SQL Server
- 25. IN子句,TSQL/SQL Server中的NULL處理?
- 26. 返回SQL Server 2000中IN子句的所有值
- 27. IN語句掛起SQL Server中的SELECT子查詢
- 28. SQL SERVER CAL函數在IN語句中
- 29. CQL3 SELECT ... IN子句中的元組數量是否有限制?
- 30. 使用SQL IN子句
http://msdn.microsoft.com/en-us/library/ms143432.aspx – xdazz
你永遠不應該寫代碼讓你在任何地方接近極限,因爲在(aa,a2,...,an)隨着n的增長變得非常低效 - 你應該儘可能通過更好的機制來控制你的查詢選擇,例如等同存在的條款 –
它只是一個面試問題...因爲我不覺得在實際的世界裏,你會有任何情況下,找到匹配組可以接近大小 – Dhaval