मुझे अपने SQL सर्वर डेटाबेस में कई अलग-अलग तालिकाओं को खोजने की आवश्यकता है। और मुझे परिणामों को क्रमबद्ध करने की आवश्यकता है कि मैच किस तालिका में हुआ था।एकाधिक टेबल्स में पूर्ण-पाठ खोज अनुकूलित करें
मैंने जो दृष्टिकोण लिया है वह नीचे दिखाया गया है। हालांकि, यह डेटा की मात्रा बढ़ने के साथ बहुत प्रभावी प्रतीत नहीं होता है।
क्या कोई इसे अनुकूलित करने के लिए किसी भी चाल का सुझाव दे सकता है?
-- Full-text query
DECLARE @FtsQuery nvarchar(100)
SET @FtsQuery = 'FORMSOF(INFLECTIONAL, detail)'
-- Maximum characters in description column
DECLARE @MaxDescription int
SET @MaxDescription = 250
SELECT 1 AS RankGroup, FTS.Rank, Id, Title, LEFT([Description], @MaxDescription) AS Description FROM Table1
INNER JOIN CONTAINSTABLE(Table1, *, @FtsQuery) AS FTS ON FTS.[KEY] = Table1.Id
UNION SELECT 2, FTS.Rank, Id, Title, NULL FROM Table2
INNER JOIN CONTAINSTABLE(Table2, *, @FtsQuery) AS FTS ON FTS.[KEY] = Table2.Id
UNION SELECT 3, FTS.Rank, Id, Title, LEFT([Description], @MaxDescription) FROM Table3
INNER JOIN CONTAINSTABLE(Table3, *, @FtsQuery) AS FTS ON FTS.[KEY] = Table3.Id
UNION SELECT 4, FTS.Rank, Id, Title, LEFT([Description], @MaxDescription) FROM Table4
INNER JOIN CONTAINSTABLE(Table4, *, @FtsQuery) AS FTS ON FTS.[KEY] = Table4.Id
UNION SELECT 5, FTS.Rank, Id, Title, LEFT([Description], @MaxDescription) FROM Table5
INNER JOIN CONTAINSTABLE(Table5, *, @FtsQuery) AS FTS ON FTS.[KEY] = Table5.Id
ORDER BY RankGroup, Rank DESC
एक विचार जिसे मैंने माना था, एक अनुक्रमित दृश्य बनाना है और फिर दृश्य पर खोज करना है। लेकिन चूंकि दृश्य को इन UNION
एस की आवश्यकता होगी, इसलिए यह देखना मुश्किल है कि यह और अधिक कुशल कैसे होगा।
एक साधारण अनुकूलन जिसे आप सुरक्षित रूप से कर सकते हैं वह 'यूनियन' के साथ 'यूनियन 'को प्रतिस्थापित कर रहा है। अधिक जानकारी के लिए: http://stackoverflow.com/questions/49925/what-is-the-difference-between-union-and-union-all – niaher