Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
22.06.2004, 21:40
|
|||
---|---|---|---|
view с параметром |
|||
#18+
никак не могу понять, как правильно реализовать одну вещь проблема возникает достаточно часто, поэтому приведу абстактный пример: предположим есть таблица остатков на складе (store) следущего вида: version integer - версия (ну скажем дата) name varchar(10) - название value integer - значение необходимо получить разницу между двумя версиями (что изменилось): select name, old.value, new.value from store as old outer join store as new using (name) where old.version=.... and new.version=.... and old.cnt<>new.cnt и результат использовать в других запросах. повторюсь - пример абстрактный, потребность в чем-то подобном возникает часто. другой пример - собрать статистику по какому-то фильтру (период данных, клиент и т.д.). то есть входные данные ограничиваются с помощью каких-либо параметров, получаем большой набор данных и строим сложный запрос на их основе я вижу 3 способа реализации: - создавать view. способ наиболее симпатичный, но параметры в view заданы жестко, придется динамически пересоздавать view для нужных параметров (могут возникнуть проблемы с параллельной работой нескольких клиентов и вообще некрасиво) - делать prepare и execute. способ неплохой, но prepare придется делать заново в каждой сессии, нельзя будет использовать результаты в другом view - написать sql-функцию. этот вариант не нравится тем, что плохо дружит с оптимизатором (если мы используем результат этой функции в запросе, то оптимизатор не объединяет их в один как в случае с view); кроме того у меня есть подозрение, что функции не рассчитаны на большие объемы и будут тормозить в случае больших наборов результирующих данных такое впечатление, что я делаю что-то не то и не так, что называется изобретаю велосипед с квадратными колесами ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&mobile=1&tid=2007801]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 164ms |
0 / 0 |