Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

CTE (रिकर्सिव) समानांतर क्यों नहीं है (MAXDOP=8)?

मैं एक कदम को हटाने के लिए सीटीई को फिर से लिखने की कोशिश करूंगा यानी

;cte as ( 
select a.first_num, a.second_num, a.first_num as first_key, 1 as sequence_count 
from  T_SEQ_FF a  where not exists (select 1 from  T_SEQ_FF b  where a.first_num = b.second_num) 
union all 
select a.first_num, a.second_num, cte.first_key, cte.sequence_count + 1 
from  T_SEQ_FF a  
inner join cte on a.first_num = cte.second_num 
) 
select * 
from cte 
option (maxrecursion 0);

यदि केवल एक मूल तत्व है तो इसे एक चर के रूप में क्वेरी में पास करना बेहतर होगा ताकि क्वेरी ऑप्टिमाइज़र द्वारा मान का उपयोग किया जा सके।

कोशिश करने की एक और चीज है सबक्वेरी के बिना रूट तत्वों को प्राप्त करने के लिए क्वेरी को बदलना यानी दूसरा_नम शून्य या first_num =second_num है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर सबक्वेरी ने 1 से अधिक मान लौटाए। इसकी अनुमति नहीं है जब सबक्वेरी इस प्रकार है =, !=, <, <=,>,>=

  2. SQL सर्वर 2005 संख्यात्मक सटीक हानि

  3. जानिए बिना बैकअप के SQL Server 2012 में डिलीट हुई टेबल को कैसे रिकवर करें

  4. संग्रहीत प्रक्रिया EXEC बनाम sp_executesql अंतर?

  5. SQL सर्वर में क्वेरी परिणाम का चयन करने के लिए अनुक्रम के साथ 'प्रारंभ' कैसे सेट करें?