【问题标题】:Netsuite Transaction search performanceNetsuite 事务搜索性能
【发布时间】:2017-04-27 12:15:57
【问题描述】:

我正在使用 Netsuite API(版本 v2016_2)来搜索数据。使用下面的代码,Netsuite 似乎花费了很多时间来响应查询。我正在搜索具有 149 条 MainLine 记录和 3941 条 LineItem (Journal Entries) 记录的特定时期的 GL 交易,而 Netsuite 需要将近 22 分钟才能提供此数据作为响应。下面是我用来搜索交易的代码 sn-p。

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

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

        semsf.@operator = 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;
        }
    }

我无法知道我是否在我的代码中遗漏了某些内容,或者这与数据有关。请为此建议我一些解决方案。

谢谢。

【问题讨论】:

    标签: netsuite


    【解决方案1】:

    您应该设置 _searchPreferences.bodyFieldsOnly = true。它将提高搜索性能,因为它不返回相关或子列表数据

    【讨论】:

      【解决方案2】:

      我认为您是从 Netsuite 外部进行此搜索以获取日记帐分录数据或行。不要在外面直接搜索,而是在 NETSUITE 中维护 RESTLET 并调用该 RESTLET。在 RESTLET 中执行您想要的搜索并返回结果。在 NETSUITE 中,搜索性能可提供快速结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多