|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
PaulWist, Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2011, 17:39 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
tanglirPaulWist, Код: plaintext 1. 2.
Ответ принимается. Только Вы всё равно используете JOIN , а Питон33 писал дословно следующее Питон33Мой ответ - не используйте JOIN , а используйте простую и понятную фразу WHERE вот я и хотел посмотреть как он собирается связать две таблы без JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 08:44 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
PaulWistвот я и хотел посмотреть как он собирается связать две таблы без JOIN Хотел бы я посмотреть на постановку реальной задачи где это твоё извращение понадобится! Если мне надо напечатать ведомость из двух таблиц,то я делаю в 1000 раз проще При формировании ведомости используется куча полей как из f1 так из f2 - Создаём курсор уникальных значений ключа SELECT F1 as Key ; FROM test1 ; UNION ; SELECT F2 as Key ; FROM test1 ; INTO CURSOR keys *UNION без ALL создаёт курсор уникальных значений - то что нам и надо, здесь же можем отсортировать по дате документа SET RELATION TO Key INTO F1, Key INTO F1 *По полям F1,F2 разумеется нужен индекс *Далее формируем отчёт REPORT ... В результате работает в 1000 раз быстрее,так как поля не надо тащить и соединять по UNION из таблиц для ведомости. Поля по SET RELATION вытаскиваются автоматически непосредственно в процессе печати REPORT Работает практически мгновенно. PS. Учиться,Учиться и ещё раз Учиться как и завещал великий Ленин, а сам подох Неучем... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 17:11 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33в 1000 раз быстрееБазист нервно курит в сторонке ... |
|||
:
Нравится:
Не нравится:
|
|||
15.07.2011, 21:56 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
tanglirПитон33в 1000 раз быстрееБазист нервно курит в сторонке Опечатка! Не в 1000, а в 10000 раз! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2011, 03:53 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33Если мне надо напечатать ведомость из двух таблиц,то я делаю в 1000 раз проще Ещё раз. Есть тестовые курсоры Код: plaintext 1. 2. 3. 4. 5. 6.
Есть выборка в результате которой получается курсор из ДВУХ полей и двух записей Код: plaintext 1.
2 Питон33 прошу показать код на фоксе без использовния JOIN в результате которого получится аналогичный курсор, ...естественно этот код должен работать для любого количества записей/полей,... надеюсь данный код не является know how :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2011, 13:14 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
PaulWist, Ну, так он это и показал уже. Идея заключается в том, что сначала создается специфический курсор-диспетчер, который имеет всего одно поле - ключ. Это поле формируется просто объединением по UNION ключей обоих таблиц. При этом дубли исключаются. Затем по SET RELATION этот курсор-диспетчер связывается с исходными таблицами. Собственно, все. Главной таблицей отчета является этот самый курсор-диспетчер, а данные из основных таблиц подтягиваются в зависимости от того, какая запись связана с главной. В принципе, если отчет не содержит сложных вычислений, вполне себе нормальный способ. Правда, утверждать, что это самый лучший из возможных способов я бы не стал. Имеет как достоинства, так и недостатки. В любом случае, настаивать на том, что Join использовать не надо - глупо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2011, 14:34 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
ВладимирМНу, так он это и показал уже. Идея заключается в том, что сначала создается специфический курсор-диспетчер, который имеет всего одно поле - ключ. Это поле формируется просто объединением по UNION ключей обоих таблиц. При этом дубли исключаются. Затем по SET RELATION этот курсор-диспетчер связывается с исходными таблицами. Собственно, все. Главной таблицей отчета является этот самый курсор-диспетчер, а данные из основных таблиц подтягиваются в зависимости от того, какая запись связана с главной. ... То что он показал - это один из способов постороения отчёта и это я понял,... я же у него прошу показать код, который без использования Join создал бы аналогичный курсор из двух курсоров, причём только и исключительно используя select c where как он сам писал/утверждал, а это не совсем то, что он "предоставил". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 09:18 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
ВладимирМНу, так он это и показал уже. Идея заключается в том, что сначала создается специфический курсор-диспетчер, который имеет всего одно поле - ключ. Это поле формируется просто объединением по UNION ключей обоих таблиц. При этом дубли исключаются. Затем по SET RELATION этот курсор-диспетчер связывается с исходными таблицами. Собственно, все. Главной таблицей отчета является этот самый курсор-диспетчер, а данные из основных таблиц подтягиваются в зависимости от того, какая запись связана с главной. В принципе, если отчет не содержит сложных вычислений, вполне себе нормальный способ. Правда, утверждать, что это самый лучший из возможных способов я бы не стал. Имеет как достоинства, так и недостатки. В любом случае, настаивать на том, что Join использовать не надо - глупо. Всё верно,именно это я и хотел показать,однако должен не согласиться с тем что способ медленный. 1. Данные для формирования отчёта подтягиваются из таблиц и сразу печатаются или заносятся в результирующую таблицу. 2. Сам код выглядит проще и читабельней, за счёт чего отладка проще и ошибки минимизируются,скорость разработки выше. В то время как JOIN работает ещё медленней,да и дров наломать легко. Помните - Хорошая программа не имеет права на ошибку! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 14:37 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон332. Сам код выглядит проще и читабельней, за счёт чего отладка проще и ошибки минимизируются,скорость разработки выше. А как насчет сортировки в отчете? Например есть таблица с заголовками накладных (номер, дата, код клиента, сумма) и список клиентов (код, название). Надо вывести отчет с группировкой по именам клиентов, т.е. сортировка должна быть по названию клиента. И как тут просто и понятно написать подготовку исходных данных без селектов с джоинами? Питон33В то время как JOIN работает ещё медленней,да и дров наломать легко. Неадекватный замер, т.к. ты выбираешь не все а только часть результата. Остальная часть подставляется в процессе формирования отчета, т.е. время подготовки результата состоит из двух частей - предвыборка кодов до вывода отчета и довыборка из дочерних таблиц по мере показа отчета. А если отчет не нужен? Например для экспорта куда-либо нужна последующая обработка результата SCAN`ом или COPY TO. Померь время селекта с джоинами и твоего подхода с последующей генерацией DBF или курсора. Удивишься. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 15:05 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Dima TПитон332. Сам код выглядит проще и читабельней, за счёт чего отладка проще и ошибки минимизируются,скорость разработки выше. А как насчет сортировки в отчете? Например есть таблица с заголовками накладных (номер, дата, код клиента, сумма) и список клиентов (код, название). Надо вывести отчет с группировкой по именам клиентов, т.е. сортировка должна быть по названию клиента. И как тут просто и понятно написать подготовку исходных данных без селектов с джоинами? Питон33В то время как JOIN работает ещё медленней,да и дров наломать легко. Неадекватный замер, т.к. ты выбираешь не все а только часть результата. Остальная часть подставляется в процессе формирования отчета, т.е. время подготовки результата состоит из двух частей - предвыборка кодов до вывода отчета и довыборка из дочерних таблиц по мере показа отчета. А если отчет не нужен? Например для экспорта куда-либо нужна последующая обработка результата SCAN`ом или COPY TO. Померь время селекта с джоинами и твоего подхода с последующей генерацией DBF или курсора. Удивишься. Ещё раз для "особо одарённых" кто читать не умеет: - Создаём курсор уникальных значений ключа SELECT F1 as Key ; FROM test1 ; UNION ; SELECT F2 as Key ; FROM test1 ; INTO CURSOR keys *UNION без ALL создаёт курсор уникальных значений - то что нам и надо, здесь же можем отсортировать по дате документа Когда формируется этот Курсор ключей - можно и отсортировать по любому полю,но сами поля выбирать не нужно. Если использовать Джопы, а потом ещё и SET RELATION,наломать ошибок, потом их выкалупывать - это закончится очередным нытьём на форуме sql.ru Про угробленное время я вообще молчу - Kein Kommentar! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 16:38 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33Если использовать Джо йн ы, а потом ещё и SET RELATION,наломать ошибок, потом их выкалупывать - это закончится очередным нытьём на форуме sql.ru Про угробленное время я вообще молчу - Kein Kommentar! Ну, если после джойнов кто-то ухитряется ещё и сетрелейшен использовать... это да, это сильно Насчёт адекватности замера (вторая часть этого поста 10989816 ) наш анонимус промолчал. Забыл ответить или просто добавить нечего? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 17:03 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33*UNION без ALL создаёт курсор уникальных значений - то что нам и надо, здесь же можем отсортировать по дате документа Когда формируется этот Курсор ключей - можно и отсортировать по любому полю,но сами поля выбирать не нужно. Только сортировка это не самая быстрая операция. И насчет простоты и читаемости кода я сомневаюсь. Питон33Если использовать Джопы, а потом ещё и SET RELATION,наломать ошибок, потом их выкалупывать SET RELATION зачем вообще использовать? Религия заставляет? SET RELATION очень проблемный в плане использования, забыл отключить и начинаются глюки где-нибудь дальше в коде который проверен-перепроверен, но не предполагает что две таблицы связаны и во второй указатель начинает ездить "сам по себе". PS Если у тебя проблемы с использованием JOIN`ов - фокс тут ни при чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 17:33 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
tanglirПитон33Если использовать Джо йн ы, а потом ещё и SET RELATION,наломать ошибок, потом их выкалупывать - это закончится очередным нытьём на форуме sql.ru Про угробленное время я вообще молчу - Kein Kommentar! Ну, если после джойнов кто-то ухитряется ещё и сетрелейшен использовать... это да, это сильно Насчёт адекватности замера (вторая часть этого поста 10989816 ) наш анонимус промолчал. Забыл ответить или просто добавить нечего? Уже ответил на этот вопрос - ORDER BY и SET ORDER TO никто не отменял. А на счёт SET RELATION после Джопов - это вопрос не ко мне а к тому кто рисует Джопы. Не спорю что Джопы это часть мат. аппарата SQL, в математических задачках наверняка пригодится. Пусть делает через джопы, тока потом не ноет что криво работает. В прикладных бухгалтерских и складских задачах проще и понятней делать через SET RELATION. Время надо ценить. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 18:43 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33А на счёт SET RELATION после Джопов - это вопрос не ко мне а к тому кто рисует Джопы. Те, кто использует Join, как правило вообще не используют SET RELATION. Питон33В прикладных бухгалтерских и складских задачах проще и понятней делать через SET RELATION. Время надо ценить. Лично я считаю наоборот. Одна команда Select-SQL наглядно показывает все взаимосвязи таблиц и никак не влиет на другие рабочие области. Использование SET RELATION - это всегда настройка среды в нескольких местах и при этом надо учитывать возможное влияние подобной настройки на другие модули приложения. С точки зрения отладки, SET RELATION значительно усложняет процесс и Вы теряете время. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2011, 20:11 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
ВладимирМ, SET RELATION только в одном месте, а вычислений бывает - хренова темень. А вот если сделать все вычисления в Джопах, тогда Джопа получится ну просто Огромная. Например надо в зависимости от признаков и типов операций делать анализ - учитывать количество и цену товара или не учитывать. Наворотов целая туча и даю 99.9 % что прога будет меняться. Опять ковыряться в джопах? Гораздо проще сделать один раз SET RELATION и думать только о прикладной задаче. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 07:21 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Убивал бы своих хомячков за использование "SET RELATION"! Это не только усложняет работу с данными, но и катастрофически замедляет работу системы. К тому же, насчет того, что типа "один раз SET RELATION и думать только о прикладной задаче" - вообще очень мало общего с программированием. Хотя бы потому, что придется постоянно, при каждом обращении к данным, бежать в это самое "один раз определенное" место и смотреть (вспоминать), как же там данные связаны. И если "вдруг" понадобиться новый вид отношений данных - добавлять новое "SET RELATION" - и так до бесконечности... Да, и еще. Видимо, любитель "SET RELATION" никогда в своей жизни не работал с сервером БД, а только с программами, когда базы лежат локально на компе. Ну, максимум - файл-сервер. Хотя даже в случае файл-сервера при "SET RELATION" - таки тормоза более, чем гарантированны... ЗЫ. Вот только не нужно мне рассказывать, как гигабайтные базы тянутся с сервера на локальный комп и потом "SET RELATION" - и как потом все это "быстро" работает... Ибо ТРОЙНОЙ расстрел за такое: загрузка сервера, загрузка сети, лишнее копирование данных на комп пользователя... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 10:22 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33ВладимирМ, SET RELATION только в одном месте, а вычислений бывает - хренова темень. А вот если сделать все вычисления в Джопах, тогда Джопа получится ну просто Огромная. У Вас какие-то очень оригинальные представления о джойнах. Какие еще вычисления в джонах? Не из-за этого ли Вы их так не любите? Просто готовить не умеете? Кака обычно мен нравятся такие зантоки от сохи, которые если чем-то не умеют пользоваться, то называют это ненужным,глупым и т.д. Их тесты самые правильные, их выводы самые правильные, а все несогласные - лохи. И их нисколько не смущает вопрос - но ведь зачем то это придумано и где-то это дожно быть очень полезно. Иначе бы этим просто никто бы не пользовался. Питон33, я сильно не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 10:26 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Sergey SizovПитон33ВладимирМ, SET RELATION только в одном месте, а вычислений бывает - хренова темень. А вот если сделать все вычисления в Джопах, тогда Джопа получится ну просто Огромная. У Вас какие-то очень оригинальные представления о джойнах. Какие еще вычисления в джонах? Не из-за этого ли Вы их так не любите? Просто готовить не умеете? Кака обычно мен нравятся такие зантоки от сохи, которые если чем-то не умеют пользоваться, то называют это ненужным,глупым и т.д. Их тесты самые правильные, их выводы самые правильные, а все несогласные - лохи. И их нисколько не смущает вопрос - но ведь зачем то это придумано и где-то это дожно быть очень полезно. Иначе бы этим просто никто бы не пользовался. Питон33, я сильно не прав? Я понимаю что тебе лень читать. Я привёл конкретный пример и ВладимирМ понял о чём речь. Например есть задача сделать сложный репорт - некую ведомость. Вычисления в ней зависят от значений в связанных справочниках. Создаём курсор ключей, делаем один раз SET RELATION и не нужны ни какие Джопы. Концентрируемся исключительно на прикладной задаче, а не на джопах! Более того с джопами можно наступить на грабли когда значение поля в результате соединения таблиц равно .Null. Джопы удобны в математических задачах, например при работе с массивами. Впрочем мне всё равно как начинающий юзер Banditos собирается использовать фокспро ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2011, 21:44 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33Концентрируемся исключительно на прикладной задаче, а не на джопах! Более того с джопами можно наступить на грабли когда значение поля в результате соединения таблиц равно .Null. Джопы удобны в математических задачах, например при работе с массивами.Ага, особенно там, где нет массивов. Большей чуши я еще не читал. Математичских! В базах данных! И прикладные задачи состоят нетолько из отчетов. И умение пользоваться троичной логикой тоже вроде не недостаток. Впрочем, эта логика, похоже, для Вас большой темный лес. Ведь может получиться аж сам NULL! Потому джойн и не нравится. Только не надо собственную неспособность понять нечто прикрывать отговорками и поливанием грязью. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 00:33 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Просто напомню, как всё это было... Питон33 - http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=852767&msg=10989621 В то время как JOIN работает ещё медленней,да и дров наломать легко.Dima T - http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=852767&msg=10989816 Неадекватный замер, т.к. ты выбираешь не все а только часть результата. Остальная часть подставляется в процессе формирования отчета, т.е. время подготовки результата состоит из двух частей - предвыборка кодов до вывода отчета и довыборка из дочерних таблиц по мере показа отчета. А если отчет не нужен? Например для экспорта куда-либо нужна последующая обработка результата SCAN`ом или COPY TO. Померь время селекта с джоинами и твоего подхода с последующей генерацией DBF или курсора. Удивишься.tanglir - http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=852767&msg=10990672 Насчёт адекватности замера (вторая часть этого поста 10989816 ) наш анонимус промолчал. Забыл ответить или просто добавить нечего?Питон33 - http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=852767&msg=10991294 Уже ответил на этот вопрос - ORDER BY и SET ORDER TO никто не отменял. Выводы делайте сами. PS. Джойны, применяемые к массивам... нечто отдалённо похожее было только у Дедала, что как бы намекает нам ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 10:40 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
проходящий.Потому джойн и не нравится. Только не надо собственную неспособность понять нечто прикрывать отговорками и поливанием грязью. 1. Грязью тебя пока ещё никто не поливает,хотя всем давно известно что ты му**к. 2. Join не может нравиться или не нравиться,так как это не девушка. Может ты извращенец? Это многое объясняет 3. Если две таблицы имеют мемо поля - тоже будешь их соединять через Join? Смотри тогда не обкакайся. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 13:34 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
tanglirПросто напомню, как всё это было... PS. Джойны, применяемые к массивам... нечто отдалённо похожее было только у Дедала, что как бы намекает нам Иди в counter strike играйся ебанько. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 13:44 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33, то есть аргументированно ответить ты не можешь. Ни мне, ни проходящему, да, похоже, вообще никому в этом топике. Ч.т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 14:45 |
|
SQL-запрос: 7-ка делает, а 9-ка виснет. ENGINEBEHAVIOR не помогает... :(
|
|||
---|---|---|---|
#18+
Питон33проходящий.Потому джойн и не нравится. Только не надо собственную неспособность понять нечто прикрывать отговорками и поливанием грязью. 3. Если две таблицы имеют мемо поля - тоже будешь их соединять через Join? Смотри тогда не обкакайся. А при чем здесь мемо поля и Join? Они в твоем понимании должны быть как-то связаны? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2011, 14:54 |
|
|
start [/forum/topic.php?fid=41&msg=37352265&tid=1584261]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
209ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 299ms |
total: | 607ms |
0 / 0 |