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

मैं SQL सर्वर तालिका में यादृच्छिक मान कैसे सम्मिलित कर सकता हूं?

जब क्वेरी इंजन इसे देखता है...

(SELECT TOP 1 [val] FROM @randomStuff ORDER BY NEWID())

... यह सब कुछ इस तरह है, "ओह, एक कैचेबल स्केलर सबक्वेरी, मैं इसे कैश करने वाला हूं!"

आपको क्वेरी इंजन को यह सोचने की ज़रूरत है कि यह गैर-कैश करने योग्य है। jfar's उत्तर करीब था, लेकिन क्वेरी इंजन इतना स्मार्ट था कि MyTable.MyColumn = MyTable.MyColumn की संरचना को देख सकता था। , लेकिन इसके माध्यम से देखने के लिए पर्याप्त स्मार्ट नहीं है।

UPDATE MyTable
   SET MyColumn = (SELECT TOP 1 val
                     FROM @randomStuff r
                          INNER JOIN MyTable _MT
                                  ON M.Id = _MT.Id
                    ORDER BY NEWID())
 FROM MyTable M

बाहरी तालिका (एमटी) को सबक्वायरी में लाकर, क्वेरी इंजन मानता है कि सबक्वायरी का पुनर्मूल्यांकन करने की आवश्यकता होगी। कुछ भी वास्तव में काम करेगा, लेकिन मैं MyTable.Id की प्राथमिक कुंजी (माना गया) के साथ गया था क्योंकि इसे अनुक्रमित किया जाएगा और बहुत कम ओवरहेड जोड़ देगा।

एक कर्सर शायद उतना ही तेज़ होगा, लेकिन निश्चित रूप से उतना मज़ेदार नहीं है।



  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. एसक्यूएल सर्वर 2008 पेजिंग विधियां?

  3. कई बार शामिल करें () का उपयोग करते समय एंटिटी-फ्रेमवर्क कोड धीमा होता है

  4. SQL सर्वर एक्सप्रेस बनाम एक्सप्रेस लोकलडीबी

  5. XML डेटा प्रकारों को क्वेरी करना जिनमें xmlns नोड विशेषताएँ हैं