मैं SQL सर्वर 2012 में निम्नलिखित T-SQL क्वेरी के साथ कुछ अजीब व्यवहार देख रहा हूं:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
अकेले इस क्वेरी को निष्पादित करने से मुझे दो सेकंड से भी कम समय में लगभग 1,300 परिणाम मिलते हैं (इसमें एक पूर्णांक अनुक्रमणिका है Name)
हालाँकि, जब मैं इस से प्रश्न बदलता हूँ:
SELECT Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"')
ORDER BY Name
OFFSET 0 rows
FETCH NEXT 10 ROWS ONLY
मुझे 10 परिणाम देने में 20 सेकंड से अधिक समय लगता है।
निम्नलिखित क्वेरी और भी बदतर है:
SELECT Id
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY Name) AS RowNum, Id
FROM dbo.Person
WHERE CONTAINS(Name, '"John" AND "Smith"') ) AS RowConstrainedResult
WHERE RowNum >= 0 AND RowNum < 11
ORDER BY RowNum
इसे पूरा करने में 1.5 मिनट से अधिक समय लगता है!
कोई विचार?
धीमी योजना

तेज योजना

SELECT TOP 10 * .... ORDER BY Name?