1

数千のデータを含むSharePointリストがあります。caml query Builderでクエリを実行すると、データのフェッチに1秒かかります。また、SharePointのデータをspservice / c#コードで処理しようとすると、そのクエリの実行に15秒かかります。なぜこれだけ違うのか。誰でも提案できますか。

SPServicejsを使用してデータをフェッチしています。使用したコードは次のとおりです。

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秒かかります。Plzヘルプ

プリヤよろしく

4

2 に答える 2

1

CAMLビルダーでクエリが高速である理由がわかりません。クエリを高速化する方法は、検索に使用しているフィールドにインデックスを付けることです。

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

于 2013-01-30T15:29:03.207 に答える
0

これは、SPServicesとCSOMの使用の違いを説明するリンクであり、PROSとCONSの両方が含まれています。

たぶん、CAMLビルダーはクエリのパフォーマンスに影響を与える可能性のあるRESTful Webサービスを使用しており、javascript/jqueryにパフォーマンスの問題があることは誰もが知っています。

CSOMに変換してみて、コードのパフォーマンスに影響するかどうかを確認することをお勧めします。サンプルコードブ​​ロックが必要な場合はお知らせください。喜んで作成します。

于 2013-01-30T17:51:19.330 に答える