sasha:
> > Спасибо, попробую
>
> Мы как-то года полтора назад сравнивали скорость IN (более 1000
> элементов) и джойна с процедурой, которая парсит строку. С процедурой
> быстрее в разы. Могу даже примером процедуры для парсинга поделиться:
>
> CREATE OR ALTER PROCEDURE CONVERT_STRING_TO_ROWSET(
>      STRING VARCHAR(32700),
>      SEPARATOR CHAR(1) = ';')
> RETURNS (
>      ROW VARCHAR(255))
> AS
>    DECLARE I INTEGER = 1;
>    DECLARE J INTEGER = 1;
> BEGIN
>    IF (SEPARATOR IS NULL) THEN
>      SEPARATOR = ';';
>
>    WHILE (I <= CHAR_LENGTH(STRING)) DO
>    BEGIN
>      IF (SEPARATOR = SUBSTRING(STRING FROM I FOR 1)) THEN
>      BEGIN
>        ROW = SUBSTRING(STRING FROM J FOR I - J);
>        SUSPEND;
>
>        I = I + 1;
>        J = I;
>      END
>
>      I = I + 1;
>    END
>
>    IF (I > J) THEN
>    BEGIN
>     ROW = SUBSTRING(STRING FROM J FOR I - J);
>     SUSPEND;
>    END
> END
Дык обсуждали всё раз дцать :)

Ответить