Конференция "Базы" » view и параметры [D7, fb2]
 
  • Евгений Р. (24.07.08 02:17) [0]
    Поддерживает ли просмотр параметры?

    create view view( f1,f2,f3 )
    as
    select f1,f2,f3
    from table
    where f4=:param

    если да, то как их передать?
  • Johnmen © (24.07.08 08:53) [1]
    Нет.
  • stas © (24.07.08 09:01) [2]
    в mssql это называется функция, в fb должно быть что-то типа этого
  • Johnmen © (24.07.08 09:07) [3]

    > в fb должно быть что-то типа этого

    Прям-таки вот так вот ДОЛЖНО? И типа чего "этого"?
  • stas © (24.07.08 09:15) [4]
    Johnmen ©   (24.07.08 09:07) [3]
    не так, но смысл тот же, типа функций в mssql.
  • Johnmen © (24.07.08 09:21) [5]

    > stas ©   (24.07.08 09:15) [4]

    Какое отношение VIEW имеет к функции?
  • stas © (24.07.08 09:38) [6]
    Johnmen ©   (24.07.08 09:21) [5]
    Причем здесь view?
    человек написал что он хочет получить на выходе и незнает как это сделать.
    Поэтому и привел пример с view.
    Я думаю он меня понял.
  • Johnmen © (24.07.08 09:41) [7]

    > stas ©   (24.07.08 09:38) [6]
    > человек написал что он хочет получить на выходе и незнает
    > как это сделать.

    У тебя что с глазами? Где он такое написал?
  • Медвежонок Пятачок © (24.07.08 09:42) [8]
    если да, то как их передать?

    select * from view where f4=:param
  • Медвежонок Пятачок © (24.07.08 09:49) [9]
    ну и включить ф4 в саму вьюху
  • Евгений Р. (24.07.08 11:25) [10]

    > select * from view where f4=:param
    >


    я в ФБ новичек.
    Не будет ли тормозов, если в table - миллион записей, а выбирается по критерию - десяток?
  • Медвежонок Пятачок © (24.07.08 11:28) [11]
    Не будет ли тормозов, если в table - миллион записей, а выбирается по критерию - десяток?

    а причем здесь вью и параметры?
  • Правильный$Вася (24.07.08 11:31) [12]

    > Не будет ли тормозов, если в table - миллион записей, а
    > выбирается по критерию - десяток?

    сокрость выборки зависит от того, насколько селективны индексы (если они есть) по тем полям, которые используются во where
    и вообще вьюха на одну таблицу смысла не имеет
  • stas © (24.07.08 11:31) [13]
    Евгений Р.   (24.07.08 11:25) [10]
    индекс на поле, по которому ведется отбор.
  • Кщд (24.07.08 11:49) [14]
    Правильный$Вася   (24.07.08 11:31) [12]
    >и вообще вьюха на одну таблицу смысла не имеет
    отчего?
  • Медвежонок Пятачок © (24.07.08 11:52) [15]
    отчего?
    От узкого кругозора
  • Игорь Шевченко © (24.07.08 11:53) [16]

    > и вообще вьюха на одну таблицу смысла не имеет


    имеет
  • stas © (24.07.08 11:59) [17]
    Правильный$Вася   (24.07.08 11:31) [12]
    Имеет - вычисляемые поля, раздача прав доступа.
  • Медвежонок Пятачок © (24.07.08 12:00) [18]
    >и вообще вьюха на одну таблицу смысла не имеет

    таблица персонала.
    я самый главный программист, ты самый неглавный программист.
    я программирую зарплату и кадры, ты программируешь напоминалку дней рождения для секретаря и видеть поле "очень большая и секретная зарплата" тебе не положено. Да и гранта на селект самой таблицы у тебя нет.

    зато есть вьюха для тебя.
  • Евгений Р. (24.07.08 12:28) [19]
    на самом деле должно быть так:
    А)
    select 1  as priznak,f1,f2,f3
    from table
    where f4=:param
    union
    select 2  as priznak,f1,f2,f3
    from table
    where f4=:param
    union
    select 3  as priznak,f1,f2,f3
    from table
    where f4=:param



    Б)
    create view view(priznak, f1,f2,f3 )
    as
    select 1  as priznak,f1,f2,f3
    from table
    union
    select 2  as priznak,f1,f2,f3
    from table
    union
    select 3  as priznak,f1,f2,f3
    from table
    *********************
    select *
    from view
    where f4=:param



    f4- везде индексировано
    А и Б будет работать одинаково?
    Нужно ли выводить поле выбора F4 в выборку?
  • Медвежонок Пятачок © (24.07.08 12:37) [20]
    Б) не будет работать
  • Евгений Р. (24.07.08 12:44) [21]
    в догонку:
    в запросе - три таблицы (table1, table2,table3)
    Б - должен выглядеть так:

    create view view(priznak, f1,f2,f3,f4 )
    as
    select 1  as priznak,f1,f2,f3,f4
    from table
    union
    select 2  as priznak,f1,f2,f3,f4
    from table
    union
    select 3  as priznak,f1,f2,f3,f4
    from table
    *********************
    select *
    from view
    where f4=:param



    теперь будет?
    и главное : как скорость?
  • Кщд (24.07.08 12:45) [22]
    >Евгений Р.   (24.07.08 12:28) [19]
    не нужно union
  • Медвежонок Пятачок © (24.07.08 12:46) [23]
    теперь будет?
    и главное : как скорость?


    Главное здесь бессмысленность самой вьюхи
  • Медвежонок Пятачок © (24.07.08 12:50) [24]
    одна и та же таблица умножается на три.
  • sniknik © (24.07.08 13:03) [25]
    > и главное : как скорость?

    select 1  as priznak,f1,f2,f3
    from table
    where f4=:param
    union
    select 2  as priznak,f1,f2,f3
    from table
    where f4=:param
    union
    select 3  as priznak,f1,f2,f3
    from table
    where f4=:param



    ->

    select f4 as priznak,f1,f2,f3
    from table
    where f4 IN (:param1, :param3, :param3)



    в 3 раза быстрей ( - кое какая погрешность скорости зависящая от разных факторов, на небольших выборках можно пренебречь).
  • Johnmen © (24.07.08 13:07) [26]
    >> в запросе - три таблицы (table1, table2,table3)

    Просто автор не утруждает себя проверкой того, что постит сюда...
  • Правильный$Вася (24.07.08 13:08) [27]

    > stas ©   (24.07.08 11:59) [17]
    > Медвежонок Пятачок ©   (24.07.08 12:00) [18]

    только в том случае, если в 2.0 нет возможности раздачи прав на поля
    но у автора я не вижу такой проблемы
  • Sergey13 © (24.07.08 13:44) [28]
    > [21] Евгений Р.   (24.07.08 12:44)

    Если позволяет логика работы, то UNION ALL ускорит выполнение.
 
Конференция "Базы" » view и параметры [D7, fb2]
Есть новые Нет новых   [134473   +28][b:0][p:0.002]