मेरे पास दो टेबल हैं (एक गैर-अनुक्रमित सूचकांक के साथ) जो नीचे दिए गए आदेशों के साथ बनाई जा सकती हैं:
CREATE TABLE GroupTable
(
GroupKey int NOT NULL PRIMARY KEY,
RecordCount int NOT NULL,
GroupScore float NOT NULL
);
CREATE TABLE RecordTable
(
RecordKey varchar(10) NOT NULL,
GroupKey int NOT NULL,
PRIMARY KEY(RecordKey, GroupKey)
);
CREATE UNIQUE INDEX ixGroupRecord ON RecordTable(GroupKey, RecordKey);
जबकि तकनीकी रूप से मेरी टेबल कुछ अलग है और मैं कुछ अन्य टेबलों में शामिल हो रहा हूं, यह मेरी स्थिति के लिए उपयुक्त प्रॉक्सी है।
- मैं उन सभी का चयन करना चाहूंगा
GroupKeys
जो दूसरे के सबसेट नहीं हैंGroupKey
। - किसी दिए गए सुपरसेट के लिए, मैं
GroupScore
इसके सभी सबसेट (स्वयं सहित) को अधिकतम हथियाना चाहूंगा । - उदाहरण में जब किसी अन्य
GroupKey
के समान सटीक होता है , तो उनमें से केवल एक को पकड़ा जाता है (यह कोई फर्क नहीं पड़ता कि कौन सा)।RecordKeys
GroupKey(s)
GroupKeys
- किसी भी दूसरे
GroupKey
के समान ही सटीक भी होगा ।RecordKeys
GroupKey(s)
GroupScore
- गैर-संबंधित के
GroupKeys
पास भी समान स्कोर हो सकता है।
निम्नलिखित उदाहरण है कि मैं क्या पूछ रहा हूं:
GroupTable RecordTable
GroupKey RecordCount GroupScore RecordKey GroupKey
------------------------------------ ---------------------
1 3 6.2 A 1
29 2 9.8 A 29
95 3 6.2 A 95
192 4 7.1 A 192
B 1
B 29
B 95
B 192
C 1
C 95
D 192
E 192
मैं आउटपुट को निम्न करना चाहूंगा:
GroupKey RecordCount GroupScore
-------------------------------------
1 3 9.8
192 4 9.8
GroupTable
RecordTable
लगभग 75M पंक्तियाँ हैं , और लगभग 115M पंक्तियाँ हैं; हालाँकि, जुड़ने और WHERE
भविष्यवाणी करने के बाद , एक निश्चित दिन में लगभग 20k पंक्तियाँ हो जाती हैं।
अगर यह सवाल तुच्छ है, तो मैं माफी चाहता हूं, लेकिन किसी कारण से मैं वास्तव में इसके साथ संघर्ष कर रहा हूं।