|
|
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Всем трям! MS SQL - Access 2000 (ADO) Есть форма - простая, без источника данных со множеством полей, каждое из которых вычисляется программно запросами. С переходом с 97 на 2000 решил оптимизировать процесс и засунул все запросы в хп на сервере. С целью минимизировать количество открытий рекордсетов засунул их в одну хп и обращаюсь к ним через NextRecordset. А теперь вопрос - а есть ли вообще разница между - если на каждый рекордсет своя хп или все запросы в одной хп. Интересует как с точки зрения программного выполнения в access (скорость), так и выполнения хп. Зы: если непонятен вопрос, распишу подробней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:26:30 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что один запрос лучче, чем несколько. Непонятно, зачем несколько наборов, почему одним набором не вернуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:32:26 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Не совсем так. Запросов много (~15) и в один их не объединить... Поэтому есть варианты на каждый селект делать хранимку или в одной вернуть все сразу типа: Select.... Select.... .... Select... и перебирать их с помощью NextRecordset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:38:53 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Запросов много и их не объединить Select @p1=... From... .. Select @p15=... From ... Select @p1, .. @p15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:41:33 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Можно всё вернуть одним набором. Просто в ХП сделайте переменные, выводите их в селекте, а алиасы полей это имена контролов на форме (если нужно, то и тип контрола можно добавлять). Потом примерно вот так - чтобы все контролы не перечислять: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:43:24 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
..... SELECT @p1 as A,@p2 as B, @p3 as C .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:44:38 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
В конце ХП сделайте один селект: Select @p15 AS NameFld1, @p15 as NameFld2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:45:28 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
2Shark, Hummer спасибо за идею, надо подумать. Дело в том что не все select-ы возвращают 1 значение среди них есть и наборы тоже...(ну это уже мои проблемы по оптимизации :) ). Ну а всетаки, чисто теоретически есть разница между открытием нового рекордсета и NextRecordset (одного и того же конекшена). Сорри за настырность, просто на будущее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:52:57 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Полагаю, что да, один запрос к серверу лучше десяти. >Me(fld.Name).Value = fld.Value Мне кажется, что контролы и филды лучче называть по разному, чтобы знать, что имеешь в виду, когда пишешь Me!myField те я бы написал че-нибудь такое Me("c" & fld.Name).Value = fld.Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 11:58:32 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
NextRecordset IMHO лучше, ибо логика собрана в одной ХП ну и чуть-чуть (незаметно) быстрей будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:00:59 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
>Не все селекты возвращают одно значение Кто мешает написать Select @p1=.., @p2=... .. From... Select @p1 p1, .... Те никто не мешает возвращать селектами больше одного значения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:01:22 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за ответы. Пойду думать дальше :) Дело в том что на самом деле первичных полей для заполнения ~50, а запихивать в одну хп стока запросов имхо тоже не есть гуд, так например: Один из наборов возвращает : Select id, Sum(summa) as Summa From... Where... Group by id где id ~ 8 и на клиенте я просто пробигаю по этому рекордсету выбирая значения, а сесли в хп присваивать каждому свой селект то запросов будет на 7 больше (имхо это хуже). Или я туплю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:10:22 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
>Или я туплю Не, не тупишь, все так и есть. В твоем случае(очень необычный случай) может и правда есть смысл вернуть больше одного набора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:16:55 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
2Shark В том то и дело, эта форма есть результат работы обекта, который производит и потребляет продукцию причем нормы расхода зависят от произведенной продукции, режима работы и могут меняться во времени... :) Вот и имеем кучу констант которые меняються во времени и на основе их и данных о работе расчитываем кучу результирующих данных (ну ооочень разные по своему характеру) конечная цель которых получить экономический эффект от работы объекта. Дело еще осложняется тем что когда создавалась структура базы, было слабое представление как это будет крутиться, поэтому структура немного кривовата, вот и приходиться изворачивать :). Надо будет над структурой поработать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 12:28:36 |
|
||
|
Совет по рекордсетам
|
|||
|---|---|---|---|
|
#18+
2 Alexey Sh И так и эдак логикак в одной ХП, не так ли?:) 2 Shark Дело вкуса. Обращайся к полю Me., а к данным Me! - мне так удобнее, к примеру, когда я все данный из контролдов в where-условие передаю - не нужно лишнюю операцию делать по удалению префикса или суффикса... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 13:49:42 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32614389&tid=1673050]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 338ms |

| 0 / 0 |
