powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему?
20 сообщений из 20, страница 1 из 1
Почему?
    #32156564
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All

Объясните, почему, если надо людям сделать запрос, то обязтельно один. Это встречается и на нашем форуме и на MS SQL.

Почему не несколько: из-за спортивного интереса , из-за соображений производительности (что странно...), из-за того, чтобы потом получить большой геморой при отладке. ?????????
...
Рейтинг: 0 / 0
Почему?
    #32156565
pv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После этого вопроса я себя ощущаю землянным червяком
...
Рейтинг: 0 / 0
Почему?
    #32156567
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, Senin Viktor, если кто-то предложит вам написать за него весь проект, то вы согласитесь ???

А проблемы у людей(включая себя) чаще всего возникают по 3-м причинам
- ошибки при проектировании схемы данных
- неправильно выбранный метод решения конкретного запроса
- попытка решения задачи вообще из другой области.
...
Рейтинг: 0 / 0
Почему?
    #32156586
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Ставлю здесь свой ответ только для того, чтобы ответил хоть кто-нибудь из понявших вопрос. А мне кажется, что я его понял.

Думаю, что дело в отладке. Я сам когда-то отлаживал запрос, сидящий на иерархии из нескольких десятков запросов. Чтобы изобразить на бумаге все это дерево, пришлось соединить два листа формата А4. Если бы авторы этого запроса (а я был одним из них, каюсь, причем мне была поручена часть этого дерева и на момент разработки я всю картину не видел) побывали на этом форуме и научились строить один запрос вместо четырех, то жизнь была бы гораздо легче.
...
Рейтинг: 0 / 0
Почему?
    #32156598
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Glory

>А что, Senin Viktor, если кто-то предложит вам написать за него весь проект, то вы согласитесь ???

Да, соглашусь ... за деньги :)

И еще для Glory.
А как в производительность таких "сложных" запросов по сравнению с несколькими "простыми"?

2 Владимир Саныч

Теперь я не со всем понял тебя :)
Так это хорошо сделать в одном запросе куча -малу из десятков

З.Ы.
Вариант действительной необходимости использовать "навароты" не рассматриваем. Расматриваем случай когда можно было бы проще, но почему-то надо сделать сложнее.
...
Рейтинг: 0 / 0
Почему?
    #32156617
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Проще и сложнее - понятия относительные. В курсе системного анализа говорится, что человек не в состоянии охватить взглядом за один раз более 5-7-9 объектов. Если всех запросов, сидящих друг на друге, получается всех вместе штук 7, то проще оставить так и ты прав. А если их общее количество начинает приближаться к сотне, то начинаешь проклинать тот день, когда сел за баранку этого пылесоса.
...
Рейтинг: 0 / 0
Почему?
    #32156662
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что те кто просят сделать запрс думают что им достаточно один раз увидеть и все будет ясно и легко. Правильнее было бы просить сделать один проект.
остальные просят помочь решить проблему.
(если я правильно понял...)
...
Рейтинг: 0 / 0
Почему?
    #32156692
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если их общее количество начинает приближаться к сотне
Фантастика! Тут и я уже начинаю ощущать себя "землянным червяком"
...
Рейтинг: 0 / 0
Почему?
    #32156726
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 вадя

Понял ты правильно, но меня интресуют те люди, котрые САМИ делают или просят других сделать именно одним запросом то, что элементарно раскалдывается понятным образом на несколько запросов
ХОтя речь идет о запросах, этот вопрос можно адресовать и на любые другие объекты, например, код модуля и т.п.
...
Рейтинг: 0 / 0
Почему?
    #32156739
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильное разбиение программы (в т. ч. SELECT) на блоки имеющие законченный логический смысл - это талант. Это когда практически без коментариев программа легко читается. А сразу понять смысл что делает SELECT с несколькими подзапросами не так уж легко. Временные таблицы народ почемуто не использует, хотя сервер создает их неявно. Что только не делают что-бы все запихнуть в один запрос (примером может послужить на SQL-форуме топик Логика в WHERE). Это мне кажется от скрытого удоволствия - а все таки я сделал одним махом, и фигня сколько потратил времени, и черт с ним что может не оптимально и что через полгода сам не пойму что нафигачил, зато я сделал то что другие не могут... Могут, только не все воюют с ветраными мельницами. Как бы не усовершенствовал программный код, он всеравно быстро морально устаревает, поэтому надо написать побыстрее и что б работало, вот, мне кажется главный критерий оптимизации проектов, ну и для души - что б немного красиво было. Уж лучше нас поблагодарят благодарные пользователи, их хорошие отзывы ото главная награда.
...
Рейтинг: 0 / 0
Почему?
    #32156753
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разбивать select на создание временных таблиц а потом общий select по временным тамлицам это намного понятнее чем вложенные select
но стает вопрос о скорости: сначала время на создание таблицы запись данных дисковая операция. потом чтение - дисковая операция .
а если все в одном то кажктся что все держится в памяти, если памяти достаточно.
или механизм другой?
я бы выбрал быстродействие перед читабельностью.
...
Рейтинг: 0 / 0
Почему?
    #32156782
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Как сказано в одном анекдоте, "и ты прав, и ты прав". Есть много критериев для того, чтобы принять решение. Кому как удобно, так и хорошо. Плохо одно - когда кто-то начинает навязывать свое удобство другому.
...
Рейтинг: 0 / 0
Почему?
    #32156803
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
навязывать удобства (в хорошем смысле) не вредно, а даже полезно.
начинаешь выискивать в своем варианте самое лучшее, и если ты чиловик умный то либо убедишь апонента, либо апонент тебя: в обоих случаях все узнают много нового и произойдет чудо - родится истина.

так что давайте навязыват удобства ведь у каждого они плод каких-то трудов.
поделись улыбкою (удобствами своими) своей и она (они) не раз еще вернется
...
Рейтинг: 0 / 0
Почему?
    #32156809
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Делиться - да. Слушать оппонента - да. Навязывать - нет.

Эти слова я сейчас напишу большими буквами на транспаранте и встану перед входом на форум.
...
Рейтинг: 0 / 0
Почему?
    #32156811
V. Motchulsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну навязывания тут я ни с какой стороны не вижу. Идет дискусия, и чем больше аргументов с одной и с другой стороны, тем больше наши познания. Иногда отстаивая "свою" сторону, можна понять в чем ты ошибался. Задан вопрос, его надо всестороне обсудить, для этого должны быть две стороны. Ну а как потом поступить - вольному воля.
Дискусию надо продолжать. Ищу аргументы в поддержку временых таблиц. Не уверен, что они приводят к дисковым операциям. В BOL ни черта не описано. Но по логике вещей вся tempdb может быть закеширована. Ни вижу смысла постояно сбрасывать буфера на диск, лог для tempdb не ведется, после сбоя информация не востанавливается, все как с памятью. Пока не ясно разбивает ли сервер сложные запросы на части с использованием tempdb или нет. У меня сложилось мнение что использование временных таблиц не замедляет работу, но может оно ошибочно, нужны тесты, контраргументы. Ибо пока живем догадками.
...
Рейтинг: 0 / 0
Почему?
    #32156821
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Senin Viktor
И еще для Glory.
А как в производительность таких "сложных" запросов по сравнению с несколькими "простыми"?


Запросы они как люди - их "нормальной" работе могут помешать всякие мелочи.
Знаете ли вы, например, что при JOIN поля типа nvarchar с полем типа varchar MS SQL может не использовать индексы ? Потому что вынужден неявно преобразовывать varchar к nvarchar ? К такому же эффекту приводит "заворачивание" поля в к-л функцию, наример, dateadd().

Или то, что план запроса может отличаться при использовании констант и переменных ?

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

А выбор между одним запросом или несколькими должен служить одной конечно задаче - наиболее быстрому его выполнению. Ну и правильному конечно.
...
Рейтинг: 0 / 0
Почему?
    #32156949
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Владимир Саныч
я же уточнил: (в хорошем смысле).
и полностью согласен с "Идет дискусия, и чем больше аргументов с одной и с другой стороны, тем больше наши познания. Иногда отстаивая "свою" сторону, можна понять в чем ты ошибался. Задан вопрос, его надо всестороне обсудить, для этого должны быть две стороны. Ну а как потом поступить - вольному воля"
- "навязывание " в таком виде и никак иначе

для понимания одного BOL явно недостачточно. даже Гетц не всегда поможет.
пока сам не испробуешь.
все-таки лучше если каждый по своему истолкует одинаковые проблемы через свое конкретное решение.
может стоит выкладывать не только вопросы здесь а и готовые решения
у каждого ведь есть чем похвастаться . я не говорю о секретах на которых зарабатывают.
может стоит совместными усилиями что-то решать
например тема "Округление". все много знали оказалось как можно развить ещё. такие вещи я думаю надо хранит в FAQ.
...
Рейтинг: 0 / 0
Почему?
    #32156954
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
2 вадя

Вадя - прав!

Эти слова я дописываю на транспарант.
...
Рейтинг: 0 / 0
Почему?
    #32156971
ДенисCh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всегда считал, что один запрос, особенно в Access выполняется гораздо быстрее, чем несколько маленьких.
У меня есть запрос, который на SQL Server работает, а в Access XP не работает, просит определить параметры (two.ClientsInf_ID). Состоит он из двух частей. В первой, он считывает идентификационные номера клиентов и передает их во вторую часть. Вторая часть вычисляет скидку для заданного идентификационного номера клиента.
Я безрезультатно пытался разбить его на несколько маленьких запросов .
Был работающий вариант, скидка вычислялась отдельной функцией, но это был такой большой тормоз, что я навсегда отказался использовать функции в Access. Пришлось воспользоваться VB и ADO.NET для того, чтобы разбить его на две части.

Вот и он:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT two.ClientsInf_ID, 
 (SELECT SUM(Trans.Quantity*(Trans.PriceSetUp-Trans.PriceFact)) AS Скидка
  FROM Trans INNER JOIN
  (
   SELECT yyy.ClientsInf_ID
   FROM ClientsInf AS yyy
   WHERE
    yyy.CustCode=(SELECT sss.CustCode FROM ClientsInf sss WHERE  
                          sss.ClientsInf_ID = two.ClientsInf_ID) AND
    yyy.DateStart>=(SELECT Min(Trans.PDate)  FROM Trans WHERE 
                           Trans.ClientsInf_ID = two.ClientsInf_ID GROUP BY 
                           Trans.ClientsInf_ID) And
    yyy.DateStart<=(SELECT Max(Trans.PDate)  FROM Trans WHERE
                           Trans.ClientsInf_ID = two.ClientsInf_ID GROUP BY 
                           Trans.ClientsInf_ID)
  ) qqq ON Trans.ClientsInf_ID = qqq.ClientsInf_ID
) AS Res

FROM ClForRep AS two;


Был очень сильно разочарован, что не смог в разбить запрос на несколько маленьких. Считаю, что если получится оформить его в одном запросе, то он будет выполняться быстрее, чем мой код на VB.
...
Рейтинг: 0 / 0
Почему?
    #32156978
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это хороший пример для дискуссии, которая ведется вот тут:\r
\r
/topic/31358
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Почему?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]