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

newid () द्वारा आदेश - यह कैसे काम करता है?

<ब्लॉकक्वॉट>

मुझे पता है कि NewID() क्या करता है, मैं यह समझने की कोशिश कर रहा हूं कि यह यादृच्छिक चयन में कैसे मदद करेगा। क्या यह है कि (1) चयन कथन mytable से सब कुछ का चयन करेगा, (2) चयनित प्रत्येक के लिए, NewID() द्वारा उत्पन्न एक अद्वितीय पहचानकर्ता पर व्यवहार करें, (3) इस अद्वितीय पहचानकर्ता द्वारा पंक्तियों को क्रमबद्ध करें और (4) क्रमबद्ध सूची से शीर्ष 100 चुनें ?

हां। यह काफी हद तक सही है (सिवाय इसके कि सभी . को छांटने की आवश्यकता नहीं है पंक्तियाँ)। आप वास्तविक निष्पादन योजना को देखकर इसे सत्यापित कर सकते हैं।

SELECT TOP 100 * 
FROM master..spt_values 
ORDER BY NEWID()

कंप्यूट स्केलर ऑपरेटर NEWID() जोड़ता है प्रत्येक पंक्ति के लिए कॉलम (मेरी उदाहरण क्वेरी में तालिका में 2506) तो तालिका में पंक्तियों को इस कॉलम द्वारा शीर्ष 100 चयनित के साथ क्रमबद्ध किया जाता है।

SQL सर्वर को वास्तव में पूरे सेट को 100 नीचे की स्थिति से सॉर्ट करने की आवश्यकता नहीं है, इसलिए यह एक TOP N का उपयोग करता है सॉर्ट ऑपरेटर जो मेमोरी में संपूर्ण सॉर्ट ऑपरेशन करने का प्रयास करता है (N . के छोटे मानों के लिए) )



  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 सर्वर में ऑपरेटर शॉर्ट-सर्किट

  2. SQL सर्वर प्रबंधन स्टूडियो (SSMS) - SQL सर्वर / TSQL ट्यूटोरियल भाग 14 में एक साथ कई क्वेरी और परिणाम कैसे देखें

  3. अद्यतन आदेश पर SQL सर्वर त्रुटि - वर्तमान आदेश पर एक गंभीर त्रुटि उत्पन्न हुई

  4. SQL सर्वर में 'पिवट' का उपयोग करके पंक्तियों को कॉलम में बदलें

  5. मैं एक अद्वितीय बाधा कैसे बना सकता हूं जो नल को भी अनुमति देता है?