|
|
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2 All Объясните, почему, если надо людям сделать запрос, то обязтельно один. Это встречается и на нашем форуме и на MS SQL. Почему не несколько: из-за спортивного интереса , из-за соображений производительности (что странно...), из-за того, чтобы потом получить большой геморой при отладке. ????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 09:58 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
После этого вопроса я себя ощущаю землянным червяком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 10:10 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
А что, Senin Viktor, если кто-то предложит вам написать за него весь проект, то вы согласитесь ??? А проблемы у людей(включая себя) чаще всего возникают по 3-м причинам - ошибки при проектировании схемы данных - неправильно выбранный метод решения конкретного запроса - попытка решения задачи вообще из другой области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 10:25 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Ставлю здесь свой ответ только для того, чтобы ответил хоть кто-нибудь из понявших вопрос. А мне кажется, что я его понял. Думаю, что дело в отладке. Я сам когда-то отлаживал запрос, сидящий на иерархии из нескольких десятков запросов. Чтобы изобразить на бумаге все это дерево, пришлось соединить два листа формата А4. Если бы авторы этого запроса (а я был одним из них, каюсь, причем мне была поручена часть этого дерева и на момент разработки я всю картину не видел) побывали на этом форуме и научились строить один запрос вместо четырех, то жизнь была бы гораздо легче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 12:12 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2 Glory >А что, Senin Viktor, если кто-то предложит вам написать за него весь проект, то вы согласитесь ??? Да, соглашусь ... за деньги :) И еще для Glory. А как в производительность таких "сложных" запросов по сравнению с несколькими "простыми"? 2 Владимир Саныч Теперь я не со всем понял тебя :) Так это хорошо сделать в одном запросе куча -малу из десятков З.Ы. Вариант действительной необходимости использовать "навароты" не рассматриваем. Расматриваем случай когда можно было бы проще, но почему-то надо сделать сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 13:24 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Проще и сложнее - понятия относительные. В курсе системного анализа говорится, что человек не в состоянии охватить взглядом за один раз более 5-7-9 объектов. Если всех запросов, сидящих друг на друге, получается всех вместе штук 7, то проще оставить так и ты прав. А если их общее количество начинает приближаться к сотне, то начинаешь проклинать тот день, когда сел за баранку этого пылесоса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 15:49 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
потому что те кто просят сделать запрс думают что им достаточно один раз увидеть и все будет ясно и легко. Правильнее было бы просить сделать один проект. остальные просят помочь решить проблему. (если я правильно понял...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 19:14 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
А если их общее количество начинает приближаться к сотне Фантастика! Тут и я уже начинаю ощущать себя "землянным червяком" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2003, 23:33 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2 вадя Понял ты правильно, но меня интресуют те люди, котрые САМИ делают или просят других сделать именно одним запросом то, что элементарно раскалдывается понятным образом на несколько запросов ХОтя речь идет о запросах, этот вопрос можно адресовать и на любые другие объекты, например, код модуля и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 10:15 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Правильное разбиение программы (в т. ч. SELECT) на блоки имеющие законченный логический смысл - это талант. Это когда практически без коментариев программа легко читается. А сразу понять смысл что делает SELECT с несколькими подзапросами не так уж легко. Временные таблицы народ почемуто не использует, хотя сервер создает их неявно. Что только не делают что-бы все запихнуть в один запрос (примером может послужить на SQL-форуме топик Логика в WHERE). Это мне кажется от скрытого удоволствия - а все таки я сделал одним махом, и фигня сколько потратил времени, и черт с ним что может не оптимально и что через полгода сам не пойму что нафигачил, зато я сделал то что другие не могут... Могут, только не все воюют с ветраными мельницами. Как бы не усовершенствовал программный код, он всеравно быстро морально устаревает, поэтому надо написать побыстрее и что б работало, вот, мне кажется главный критерий оптимизации проектов, ну и для души - что б немного красиво было. Уж лучше нас поблагодарят благодарные пользователи, их хорошие отзывы ото главная награда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 11:30 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
разбивать select на создание временных таблиц а потом общий select по временным тамлицам это намного понятнее чем вложенные select но стает вопрос о скорости: сначала время на создание таблицы запись данных дисковая операция. потом чтение - дисковая операция . а если все в одном то кажктся что все держится в памяти, если памяти достаточно. или механизм другой? я бы выбрал быстродействие перед читабельностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 12:07 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Как сказано в одном анекдоте, "и ты прав, и ты прав". Есть много критериев для того, чтобы принять решение. Кому как удобно, так и хорошо. Плохо одно - когда кто-то начинает навязывать свое удобство другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 13:44 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
навязывать удобства (в хорошем смысле) не вредно, а даже полезно. начинаешь выискивать в своем варианте самое лучшее, и если ты чиловик умный то либо убедишь апонента, либо апонент тебя: в обоих случаях все узнают много нового и произойдет чудо - родится истина. так что давайте навязыват удобства ведь у каждого они плод каких-то трудов. поделись улыбкою (удобствами своими) своей и она (они) не раз еще вернется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 15:04 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Делиться - да. Слушать оппонента - да. Навязывать - нет. Эти слова я сейчас напишу большими буквами на транспаранте и встану перед входом на форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 15:17 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Ну навязывания тут я ни с какой стороны не вижу. Идет дискусия, и чем больше аргументов с одной и с другой стороны, тем больше наши познания. Иногда отстаивая "свою" сторону, можна понять в чем ты ошибался. Задан вопрос, его надо всестороне обсудить, для этого должны быть две стороны. Ну а как потом поступить - вольному воля. Дискусию надо продолжать. Ищу аргументы в поддержку временых таблиц. Не уверен, что они приводят к дисковым операциям. В BOL ни черта не описано. Но по логике вещей вся tempdb может быть закеширована. Ни вижу смысла постояно сбрасывать буфера на диск, лог для tempdb не ведется, после сбоя информация не востанавливается, все как с памятью. Пока не ясно разбивает ли сервер сложные запросы на части с использованием tempdb или нет. У меня сложилось мнение что использование временных таблиц не замедляет работу, но может оно ошибочно, нужны тесты, контраргументы. Ибо пока живем догадками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 15:21 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2Senin Viktor И еще для Glory. А как в производительность таких "сложных" запросов по сравнению с несколькими "простыми"? Запросы они как люди - их "нормальной" работе могут помешать всякие мелочи. Знаете ли вы, например, что при JOIN поля типа nvarchar с полем типа varchar MS SQL может не использовать индексы ? Потому что вынужден неявно преобразовывать varchar к nvarchar ? К такому же эффекту приводит "заворачивание" поля в к-л функцию, наример, dateadd(). Или то, что план запроса может отличаться при использовании констант и переменных ? Или то, что использование временной таблицы в процедуре может приводить к ее перекомпляции при каждом вызове. Что в свою очередь может вызывать блокироки при большом числе коннектов ? А выбор между одним запросом или несколькими должен служить одной конечно задаче - наиболее быстрому его выполнению. Ну и правильному конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2003, 15:43 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2Владимир Саныч я же уточнил: (в хорошем смысле). и полностью согласен с "Идет дискусия, и чем больше аргументов с одной и с другой стороны, тем больше наши познания. Иногда отстаивая "свою" сторону, можна понять в чем ты ошибался. Задан вопрос, его надо всестороне обсудить, для этого должны быть две стороны. Ну а как потом поступить - вольному воля" - "навязывание " в таком виде и никак иначе для понимания одного BOL явно недостачточно. даже Гетц не всегда поможет. пока сам не испробуешь. все-таки лучше если каждый по своему истолкует одинаковые проблемы через свое конкретное решение. может стоит выкладывать не только вопросы здесь а и готовые решения у каждого ведь есть чем похвастаться . я не говорю о секретах на которых зарабатывают. может стоит совместными усилиями что-то решать например тема "Округление". все много знали оказалось как можно развить ещё. такие вещи я думаю надо хранит в FAQ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2003, 11:40 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
2 вадя Вадя - прав! Эти слова я дописываю на транспарант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2003, 12:05 |
|
||
|
Почему?
|
|||
|---|---|---|---|
|
#18+
Всегда считал, что один запрос, особенно в 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. Был очень сильно разочарован, что не смог в разбить запрос на несколько маленьких. Считаю, что если получится оформить его в одном запросе, то он будет выполняться быстрее, чем мой код на VB. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2003, 13:18 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32156586&tid=1681580]: |
0ms |
get settings: |
5ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
28ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 327ms |

| 0 / 0 |
