Саша, зачем тебе высказывания Павла, который к коду отношения не имеет,
тогда как у нас, тут вот, здесь вот, прямо тут, есть непосредственные
кодоведы?..
А я думал он тоже кодит... То-то он туго въезжает в багрепорты :-)
Проверил через блок. Результаты плохие. Видимо много времени уходит на
копирование данных как я и предпологал. Поэтому я сравнил два блока -
один с дюкеями, второй с ПК. С дбкеями всё-таки пошустрее:
С дбкеями:
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