2017-02-08 15 views
7

में अनावश्यक रूपांतरण मेरे पास bigint डेटाबेस और प्राथमिक डेटा डेटाबेस के साथ इकाई डेटा मॉडल के साथ कर्मचारी तालिका है। के रूप में निम्नलिखित कर्मचारी वर्ग इस संरचनाबिगिन

public partial class Employee 
{ 
    public long Emp_No { get; set; } 
    public string Name { get; set; } 
    public string Family { get; set; } 
    ... 
} 

मैं इकाई की रूपरेखा के साथ इस मूल क्वेरी लिखने

List<long> ids = new List<long>() {1,2,3,4,5,6} 
database.Employees.Where(q => ids.Contain(q.Emp_No)).ToList(); 

यह क्वेरी उत्पन्न होते हैं:

SELECT 
    [Extent1].[Emp_No] AS [Emp_No], 
    [Extent1].[Name] AS [Name], 
    [Extent1].[Family] AS [Family], 
    ... 
    FROM [dbo].[Employee] AS [Extent1] 
    WHERE [Extent1].[Emp_No] IN (cast(0 as bigint), 
           cast(1 as bigint), 
           cast(2 as bigint), 
           cast(3 as bigint), 
           cast(4 as bigint), 
           cast(5 as bigint), 
           cast(6 as bigint)) 

के रूप में आप देख सकते हैं करने के लिए अनावश्यक डाली है क्वेरी में बिगिनट जबकि Emp_No और ids सरणी long दोनों हैं, यह खराब निष्पादन समय विशेष रूप से ids सरणी में कई तत्व हैं।

मैं इस अनावश्यक कलाकार को कैसे हटा सकता हूं?

उत्तर

3

लगभग रूपांतरण cast(0 as bigint) में कोई लागत नहीं आती है और क्योंकि Emp_No भी एक bigint है अगर आप डाली वहाँ पूर्णांक अभी भी सक्षम होने के लिए एक bigint करने के लिए प्रोत्साहित करने की आवश्यकता होगी नहीं था IN तुलना करने के लिए ताकि दृश्य अभी भी दृश्यों के पीछे हो जाएंगे।

अपने आप को प्रबंधन स्टूडियो में क्वेरी के गैर-कलाकार संस्करण को चलाएं और वास्तविक निष्पादन योजना प्राप्त करें और आप अभी भी क्वेरी योजना में रूपांतरण देखेंगे।

-2

नहीं वास्तव में सुनिश्चित करें कि आप यहाँ जो चाह रहे हैं लेकिन ..

int करने के लिए अपने लंबे समय बदलें और क्वेरी आप bigint के बजाय एक पूर्णांक बनाना चाहिए।

public partial class Employee 
{ 
    public int Emp_No { get; set; } 
    public string Name { get; set; } 
    public string Family { get; set; } 
    .... 
} 

लंबे समय के बराबर है। आप और अधिक यहाँ पढ़ सकते हैं: What is the equivalent of bigint in C#?

+0

मैं यह नहीं कर सकता .. मुझे लंबे प्रकार की आवश्यकता है –

संबंधित मुद्दे