Конференция "Базы" » Оптимизация запроса [Firebird 2.0]
 
  • zorik © (18.06.08 17:02) [20]

    > Как понимать тебя, Саид? (с) т.Сухов8-)


    CREATE VIEW EXP_LIST_WELL_W2 (
     SORTNAME_WELL,
     NAME_WELL,
     ZDATE,
     QO_M
    )
    AS
    select
    well.sortname_well,
    well.name_well,
    mezwello.date_mezwello zdate,
    sum(mezo.qo_m) qo_m
    from mezo
    inner join mezwello on (mezo.id_mezwello = mezwello.id_mezwello)
    inner join well on (well.id_well = mezwello.id_well)
    group by
    well.sortname_well,
    well.name_well,
    mezwello.date_mezwello

  • zorik © (18.06.08 17:06) [21]

    > Sergey13 ©   (18.06.08 16:54) [18]
    > Если уж это sortname такое важное, то почему бы не сделать
    > его НОРМАЛЬНЫМ полем и следить за его изменением с помощью
    > тригеров.ИМХО всяко шустрее должно быть.


    Интересно можно ли такое реализовать - тригер срабатывает на добавление или изменение и используя функцию из UDF заполняет дополнительное поле. И не надо его будет пересчитывать каждый раз. Добавления проходят крайне редко, да и в таблице WELL всего около 1500 записей
  • zorik © (18.06.08 17:29) [22]
    Реализовал тригер, как задумал в [21]:
    CREATE TRIGGER TR_SETSORTNAME_BI FOR WELL
    ACTIVE BEFORE INSERT OR UPDATE POSITION 0
    AS
    BEGIN
     new.sortname_well=sortname(new.name_well);
    END
    ;



    Дальше буду сам остальные погрешности исправлять.
    Спасибо всем!
  • Правильный-Вася (18.06.08 17:48) [23]
    план запроса у вьюхи посмотри
    станет ясно направление движения
  • zorik © (18.06.08 17:50) [24]

    > Правильный-Вася   (18.06.08 17:48) [23]

    еще не дорос до планов. надо изучать
  • zorik © (18.06.08 17:51) [25]
    добавил индекс для поля sortname, раньше когда оно было вычислительным. это сделать нельзя было
 
Конференция "Базы" » Оптимизация запроса [Firebird 2.0]
Есть новые Нет новых   [134434   +28][b:0][p:0.001]