2017-04-27 16 views
0

Netsuite API(バージョンv2016_2)を使用してデータを検索しています。以下のコードでは、Netsuiteがクエリに応答する時間がかかりそうです。私は149 MainLineレコードと3941 LineItem(ジャーナルエントリ)レコードを持っており、Netsuiteは応答でこのデータを与えるために約22分かかります。以下は、トランザクションを検索するために使用しているコードスニペットです。Netsuiteトランザクション検索のパフォーマンス

public void GetTransactionData() 
{ 
     DataTable dtData = new DataTable(); 
     string errorMsg = ""; 
     LoginToService(ref errorMsg); 

     TransactionSearch objTransSearch = new TransactionSearch(); 
     TransactionSearchBasic objTransSearchBasic = new TransactionSearchBasic(); 
     SearchEnumMultiSelectField semsf = new SearchEnumMultiSelectField(); 

     [email protected] = SearchEnumMultiSelectFieldOperator.anyOf; 
     semsf.operatorSpecified = true; 
     semsf.searchValue = new string[] { "Journal" }; 
     objTransSearchBasic.type = semsf; 


     objTransSearchBasic.postingPeriod = new RecordRef() { internalId = "43" }; 

     objTransSearch.basic = objTransSearchBasic; 


     //Set Search Preferences 
     SearchPreferences _searchPreferences = new SearchPreferences(); 
     Preferences _prefs = new Preferences(); 
     _serviceInstance.preferences = _prefs; 
     _serviceInstance.searchPreferences = _searchPreferences; 
     _searchPreferences.pageSize = 1000; 
     _searchPreferences.pageSizeSpecified = true; 
     _searchPreferences.bodyFieldsOnly = false; 

     //Set Search Preferences 

     try 
     { 
      SearchResult result = _serviceInstance.search(objTransSearch); 
    /* 
    Above line taking almost 22 minutes for below record count 
    result.recordList.Length = 149 
    Total JournalEntryLine = 3941 
    */ 


      List<JournalEntry> lstJEntry = new List<JournalEntry>(); 
      List<JournalEntryLine> lstLineItems = new List<JournalEntryLine>(); 

      if (result.status.isSuccess) 
      { 
       for (int i = 0; i <= result.recordList.Length - 1; i += 1) 
       { 

        JournalEntry JEntry = (JournalEntry)result.recordList[i]; 
        lstJEntry.Add((JournalEntry)result.recordList[i]); 

        if (JEntry.lineList != null) 
        { 

         foreach (JournalEntryLine line in JEntry.lineList.line) 
         { 
          lstLineItems.Add(line); 
         } 
        } 
       } 
      } 


      try 
      { 
       _serviceInstance.logout(); 
      } 
      catch (Exception ex) 
      { 

      } 
     } 

     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

私は自分のコードに何かが見つからないか、これがデータに関するものです。私にこれのための何らかの解決策を提案してください。

ありがとうございました。

答えて

0

_searchPreferences.bodyFieldsOnly = trueに設定する必要があります。関連またはサブリストのデータを返さないため、検索のパフォーマンスが向上します

関連する問題