Саша, зачем тебе высказывания Павла, который к коду отношения не имеет,
тогда как у нас, тут вот, здесь вот, прямо тут, есть непосредственные 
кодоведы?..

А я думал он тоже кодит... То-то он туго въезжает в багрепорты :-)

Проверил через блок. Результаты плохие. Видимо много времени уходит на копирование данных как я и предпологал. Поэтому я сравнил два блока - один с дюкеями, второй с ПК. С дбкеями всё-таки пошустрее:

С дбкеями:

Prepare time = 15ms
Execute time = 1s 63ms
Avg fetch time = 2.06 ms

С ключами:

Prepare time = 15ms
Execute time = 1s 94ms
Avg fetch time = 2.12 ms


Я раз по 10 запускал запросы и это самые часто встречающиеся цифры. Т.е. в среднем на 19% быстрее с дбкеями у меня получилось. Не мало я бы сказал...


Блок такой:

EXECUTE BLOCK
RETURNS (
  "Id" INTEGER,
  "FeedId" INTEGER,
  "Title" VARCHAR(4096),
  "Link" VARCHAR(4096),
  "Description" VARCHAR(28000),
  "Author" VARCHAR(1024),
  "Comments" VARCHAR(4096),
  "Guid" VARCHAR(4096),
  "PubDate" TIMESTAMP,
  "UpdateDate" TIMESTAMP,
  "AddingDate" TIMESTAMP,
  "SourceUrl" VARCHAR(4096),
  "SourceValue" VARCHAR(1024),
  "Hash" INTEGER,
  "Deprecated" SMALLINT,
  "Hidden" SMALLINT,
  "Categories" VARCHAR(4096),
  "OwnerId" INTEGER,
  "EnclosureUrl" VARCHAR(4096),
  "EnclosureLength" BIGINT,
  "EnclosureType" VARCHAR(128),
  "StatusId" SMALLINT,
  "CommentingAllowed" SMALLINT)
AS
  DECLARE DBKEY CHAR(8) CHARACTER SET OCTETS;
  DECLARE ID INTEGER;
BEGIN
  FOR SELECT FI."Id" --FI.RDB$DB_KEY
FROM CONVERT_STRING_TO_ROWSET('1;2;3;4;5;6;7;8;9;10;17;39;15;18;81;82;376;19;40;85;86;87;20;88;41;89;90;21;42;91;92;93;190;94;95;23;191;96;97;98;99;44;25;100;101;102;103;26;45;104;106;27;107;108;109;28;181;29;30;31;32;33;34;35;36;38;46;48;192;112;193;49;114;115;116;117;50;118;119;120;121;51;122;52;53;54;55;182;183;56;184;185;57;186;58;187;59;60;61;62;63;64;65;66;67;68;69;70;71;72;73;74;75;76;77;78;79;80;124;125;126;127;128;129;134;135;136;137;138;140;141;142;143;144;145;146;147;148;149;150;151;152;153;154;155;156;157;158;159;160;197;199;200;201;202;203;204;377;212;206;213;207;214;208;215;209;216;210;217;211;218;227;378;379;380;229;230;231;232;233;234;235;236;237;238;239;240;241;242;243;244;245;246;247;248;381;250;382;383;253;254;255;256;257;258;259;260;261;262;263;264;265;266;267;268;269;270;271;272;273;274;275;276;277;278;279;280;281;282;283;284;285;286;287;288;289;290;291;292;384;385;386;387;388;389;390;391;392;302;303;393;394;395;396;397;398;399;400;312;313;401;402;403;404;318 ;405;406;407;408;409;410;325;326;327;328;329;330;331;332;333;334;335;336;337;338;339;340;341;342;343;344;345;346;347;348;349;350;351;352;353;354;355;356;357;358;359;360;361;362;363;364;365;366;367;368;369;370;371;372;373;374;375;411;412;413;414;415;416;417;418;419;420;421;422;423') DATA
    JOIN "RssCacheElements" RCE ON RCE."FeedDefinitionId" = DATA.ROW
    JOIN "RssFeedItems" FI ON FI."FeedId" = RCE."RssFeedId"
    WHERE FI."Id" IS NOT NULL
    ORDER BY FI."PubDate" DESC, FI."Title"
    INTO :ID/* :DBKEY */ DO
  BEGIN
SELECT * FROM "RssFeedItems" RFI WHERE RFI."Id" = :ID --RFI.RDB$DB_KEY = :DBKEY INTO :"Id", :"FeedId", :"Title", :"Link", :"Description", :"Author", :"Comments", :"Guid", :"PubDate", :"UpdateDate", :"AddingDate", :"SourceUrl", :"SourceValue", :"Hash", :"Deprecated", :"Hidden", :"Categories", :"OwnerId", :"EnclosureUrl", :"EnclosureLength", :"EnclosureType", :"StatusId", :"CommentingAllowed";
    SUSPEND;
  END
END

Ответить