1

我有包含数千个数据的共享点列表。如果我在 caml 查询生成器中执行查询,则需要一秒钟来获取数据。当我尝试使用 spservice / c# 代码在 sharepoint 中获取数据时,执行该查询需要 15 秒。为什么会有这么多不同。任何人都可以建议。

我正在使用 SPService js 来获取数据。我使用的代码是:

var querySkill = "<Query><Where><And><Eq><FieldRef Name='User_x003a_ID' /><Value Type='Lookup'>"+rowUserId+"</Value></Eq><And><Eq><FieldRef Name='Role_x003a_ID' /><Value Type='Lookup'>"+rowRoleId+"</Value></Eq><And><Eq><FieldRef Name='Skill_x0020_Category_x003a_ID' /><Value Type='Lookup'>"+rowCategoryId+"</Value></Eq><Eq><FieldRef Name='Skill_x0020_Group_x003a_ID' /><Value Type='Lookup'>"+rowGroupId+"</Value></Eq></And></And></And></Where></Query>"
        var camlViewFieldsSkill = "<ViewFields><FieldRef Name='Fulfillment' /></ViewFields>";
        var groupPer;
        var groupArray = new Array();
        $().SPServices({
            operation: "GetListItems",
            async: false,
            listName: "User Skills",
            CAMLQuery: querySkill,
            CAMLViewFields: camlViewFieldsSkill,
            completefunc: function (xData, Status) {
                $(xData.responseXML).find("z\\:row, row").each(function () {
                  var skillId = $(this).attr("ows_ID");
                  var skillName=$(this).attr("ows_Skill").split("#")[1];
                  var fulfilment=$(this).attr("ows_Fulfillment");
                    $(subGridSkill).jqGrid('addRowData', skillId, { id: skillId, skillid: skillId, skill:skillName, skillfulfillment: fulfilment });

                });

            }
        });

即使我正在编写服务器端代码,也需要 15-20 秒来获取数据。请帮忙

问候普里亚

4

2 回答 2

1

不知道为什么在 CAML 构建器中您的查询速度很快。可以加快查询速度的方法是索引您用于搜索的字段:

http://msdn.microsoft.com/en-us/library/ff798465.aspx

于 2013-01-30T15:29:03.207 回答
0

这是一个链接,解释了使用 SPServices 和 CSOM 之间的区别,其中还包括它们的优点和缺点。

也许 CAML 构建器使用 RESTful Web 服务,这可能会影响您的查询性能,我们都知道 javascript/jquery 存在性能问题。

您可能想尝试转换为 CSOM 并检查它是否会影响代码的性能。如果您需要示例代码块,请告诉我,我很乐意为您编写一个。

于 2013-01-30T17:51:19.330 回答