मेरे पास सामान्य रूप से बहुत सरल प्रश्न है और यह समझ में नहीं आता कि वास्तविक निष्पादन योजना मुझे "नेस्टेड लूप्स" नोड पर प्रारंभिक चयन के ठीक बाद "चेतावनी में शामिल हों" क्यों चेतावनी देता है।"कोई भविष्यवाणी नहीं करें" - क्यों?
मुझे लगता है कि क्वेरी बहुत आत्म-स्पष्टीकरणपूर्ण है: मेरे पास उपयोगकर्ता हैं और उनके पास फ़ीड्स के लिए उपयोगकर्ता सदस्यताएं हैं (एम: एन) - मैं एक फीड से सभी फीड इटम्स से पूछता हूं कि उपयोगकर्ता को सब्सक्राइब किया जाना चाहिए, इसलिए यह क्वेरी यह करती है बहुत अच्छी तरह से:
select fi.Title, fi.Content, fi.Published
from [User] u
inner join UserSubscription us on u.id = us.UserId
inner join Feed f on f.id = us.FeedId
inner join FeedItem fi on fi.FeedId = f.Id
where u.EMailAddress = '[email protected]'
and f.id = 3
and fi.Inserted > getdate() - 30
दिलचस्प हिस्सा वहाँ कोई चेतावनी के रूप में लंबे समय से मैं इस स्थिति को समाप्त छोड़ के रूप में है: जैसे ही मैं के बारे में चेतावनी निकाल देने के रूप में,
and f.id = 3
लापता शामिल होने विधेय गायब हो जाता है । मैं यहां इस चेतावनी के कारण को समझ नहीं पा रहा हूं।
किसी भी मदद को समझने में इसकी सराहना की जाएगी!
धन्यवाद बी।
qv http://dba.stackexchange.com/questions/34193/should-i-be-alarmed-by-this-no-join-predicate- चेतावनी और http://dba.stackexchange.com/questions/ 35082/क्या-बिल्कुल-करता-नहीं-join-predicate-mean-in-sql-server - संक्षेप में, यह * स्वचालित रूप से * एक बुरी चीज नहीं है – AakashM
ठीक है जहां तक मैं समझता हूं - मेरे मामले में SQL सर्वर अनुकूलित करेगा Feed.Id = 3 के लिए मेरी हालत के रूप में फ़ीड पर शामिल हों, असफल होने में? तो यही कारण है कि इस तालिका के लिए अब कोई भविष्यवाणी नहीं है? ठीक है, प्रदर्शन के अनुसार ... वास्तव में एक मुद्दा नहीं होना चाहिए। तर्कसंगत रूप से मुझे इसके बारे में सोचना होगा क्योंकि फ़ीड <-> उपयोगकर्ता सदस्यताएं किसी भी फ़ीड्स के लिए फ़िल्टर करने के लिए हैं, जहां उपयोगकर्ता वास्तव में सब्सक्राइब किया गया है क्योंकि ऐसा नहीं कहा जाता है कि उपयोगकर्ता ने इस उदाहरण में आईडी 3 के साथ फ़ीड की सदस्यता ली है। धन्यवाद! –