Monday 15 March 2010

performance - SQL Server 2008 extremely slow using FTS on joined tables -


मेरे पास दो टेबल हैं

  उत्पाद (id int, brandid int, name nvarchar (1000) )) 2+ मिलियन पंक्तियां ब्रांड (आईडी इंट, नाम नैवर्चार (1000)) 20k पंक्तियां  

पूर्ण पाठ अनुक्रमणिका दोनों तालिका के नाम फ़ील्ड पर सक्षम है।

अगर मैं करता हूं एक खोज जैसे

  SELECT count (*) से उत्पाद पी में ब्रैण्ड बी को पी। ब्रेंडैड = बी.आईडी जहां शामिल है (b.name, 'calvin')  

सुपर फास्ट (एक सेकंड से कम) चलाता है। पी.नाम फ़ील्ड के खिलाफ दौड़ते ही एक ही परिणाम।

लेकिन यह क्वेरी

  SELECT count (*) से उत्पाद पी में ब्रैण्ड बी में पी। ब्रेंडैड = बी.आईडी WH जहां शामिल हैं (बी.एन.एन., 'केल्विन') या इसमें (पी। नाम, 'कैल्विन')  

एक मिनट (वास्तव में कई मिनट) लेता है यदि या में बदल दिया गया है और यह भी सुपर फास्ट है।

मैं यूनिअन या कंटेस्टेबल का उपयोग नहीं कर सकता क्योंकि मैं नाइबरनेट का उपयोग कर रहा हूं।

मैं सुझाव है कि आप पढ़ा।

OR के साथ कोई भी प्रश्न प्रदर्शन समस्याओं का एक संभावित स्रोत है। शामिल होने के दो तालिकाओं के बीच एक या, जो कि आपदा के लिए निमंत्रण जैसा है, क्योंकि ऑप्टिमाइज़र ने मूल रूप से किसी भी जानकारी को खो दिया है जिसमें शामिल होने का अनुकूलन करना है। पूर्ण पाठ की स्थिति में फेंक दें, जो कार्डिनिलिअटी भविष्यवाणी (स्थिति से मेल खाने वाली पंक्तियों की संख्या) को सर्वश्रेष्ठ में एक जंगली अनुमान देगा और आप खुद को एक सही तूफान प्राप्त करेंगे।

OR से छुटकारा पायें अवधि। अपनी आवश्यकताओं को संशोधित करें, मध्य पुरुष (ORM परतों) को त्यागें


No comments:

Post a Comment