Quantcast
Channel: SQL.ru: Firebird, InterBase
Viewing all articles
Browse latest Browse all 1677

Тормоза в FB 3 при использовании процедуры List_to_rows

$
0
0
Здравствуйте

есть процедура
create or alter procedure Msp_List_To_Rows (
    Lst varchar(1000))
returns (
    Id integer)
AS
declare pos_ int;
  declare offset_ int = 1;
  declare beg int;
  declare buf varchar(8000);
begin
  lst = coalesce(LST, '');
  while (0=0) do begin
    buf = substring(lst from offset_ for 8000);
    pos_ = 1; beg = 1;
    while (pos_ <= char_length(buf) and pos_ <= 8000) do begin
      if (substring(buf from pos_ for 1) = ',') then begin
        if (pos_ > beg) then
          id = substring(buf from beg for pos_ - beg);
        else
          id = null;
        suspend;
        beg = pos_ + 1;
      end
      pos_ = pos_ + 1;
    end
    if (offset_ + pos_ - 2 = char_length(lst)) then leave;
    offset_ = offset_ + beg - 1;
    if (offset_ > char_length(lst)) then leave;
  end

  if (pos_ > beg) then
    id = substring(buf from beg for pos_ - beg);
  else
    id = null;
  suspend;
end


в фб 2.5 join-ы очень быстро проходили, но при переходе на 3.0 начались тормоза 0.3 сек в фб2.5 против 7сек в фб3,
если явно указать
 in (value1, value2...)
то все работает идеально.

как победить? нет ли в фб3 встроенного split-a более быстрого?

Спасибо!

Viewing all articles
Browse latest Browse all 1677

Trending Articles