|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Имеется три таблицы, основная и две подчинённые. При этом в приложении необходимо отображать данные из основной и несколько вычисляемых столбцов на основе подчинённых. Примерно так: Таблицы: A - основная, B и C - подчинённые. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Нужно отобразить в сводной таблице для каждой записи из A:
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 00:43 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Ответ зависит от многих факторов, включая версию Firebird, размеры таблиц и т.д. и т.п. Ну и было бы неплохо посмотреть на твои собственные попытки, их планы и статистику. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 01:12 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ответ зависит от многих факторов, включая версию Firebird, размеры таблиц и т.д. и т.п. Версия 3.0, таблицы... ну пока небольшие - до десятков тысяч записей. Dimitry Sibiryakov Ну и было бы неплохо посмотреть на твои собственные попытки, их планы и статистику. Например в данный момент таблицы B ещё нет, а для таблицы C есть поле в A, которое обновляется по триггеру при изменении C. Но мне кажется это не совсем правильным решением, особенно для новых условий. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 01:15 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp, а чего не a join b join c ? left по вкусу, в зависимости от наличия записей в b и c соответствующих a. в sql можно по всякому делать. "вложенные запросы" - это обычно от неумения join. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 01:34 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvpМне не код нужен, а направление в котором двигаться. Все направления работоспособны при определённых условиях: 1) Простой JOIN + GROUP. 2) JOIN + DERIVED TABLE с GROUP внутри 3) SUBQUERY 4) Хранимые агрегаты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 12:12 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Привет. alekcvp Имеется три таблицы, основная и две подчинённые
И все это оформил бы, как VIEW. Основной вопрос - какой должен быть join (left или inner)? Могут ли FK-поля в таблицах B и C принимать значение NULL? Должны ли в результате запроса присутствовать записи из A, ссылки на которые отсутствуют в B и/или C? С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 13:41 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp, скорее всего обычным джойном такое не получится. Агрегаты с разными условиями так не сделать. Можно ещё рассмотреть оконные функции, в них агрегаты настраиваются по условию. Совсем просто - это подзапросы по таблицам B и С. Но может оказаться перепробег, т.е. по одним и тем же данным будет несколько проходов. На первый взгляд это Ваш случай - сумма по таблице B, частичная сумма по таблице B... По-моему, оконные для этого - полная выборка и агрегаты по разным условиям. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 15:07 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov Я бы для таблиц B и С агрегатные вычисления оформил бы в виде CTE, которые заджоинил к таблице A. CTE? Polesov Могут ли FK-поля в таблицах B и C принимать значение NULL? Polesov Должны ли в результате запроса присутствовать записи из A, ссылки на которые отсутствуют в B и/или C? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:48 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
kdv а чего не a join b join c ? left по вкусу, в зависимости от наличия записей в b и c соответствующих a. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:49 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp, Начни в лоб: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
на нескольких десятках тысяч записей будет отрабатываться очень быстро, по крайней мере, прототип приложения отладишь, а там и новые идеи придут. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 17:52 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov, Что-то типа такого? Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 18:04 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov, Что-то типа такого? Код: sql 1. 2. 3. 4. 5. 6.
Агрегат по В можно делать в одной CTE. Я тут интереса ради смакетировал свое предложение (скрипт под спойлером). /* TABLE A ****************************************/ create table A ( ID integer not null, VAL varchar(32) ); alter table A add constraint PK_A primary key ( ID ); /* TABLE B ****************************************/ create table B ( ID integer not null, ID_A integer not null, SUM1 float, SUM2 float, FIX date ); alter table B add constraint PK_B primary key ( ID ); alter table B add constraint FK_B_A foreign key ( ID_A ) references A ( ID ); create index IDX_B_FIX on B ( FIX ); /* TABLE C ****************************************/ create table C ( ID integer not null, ID_A integer not null, MIN1 float ); alter table C add constraint PK_C primary key ( ID ); alter table C add constraint FK_C_A foreign key ( ID_A ) references A ( ID ); create index IDX_C_MIN1 on C ( MIN1 ); /* VIEW V_ABC *************************************/ create view V_ABC ( ID, VAL, SUM_1, SUM_2, MIN_1 ) as with CTE_B ( ID_A, SUM_1, SUM_2 ) as ( select ID_A, sum( SUM1 ) as SUM_1, sum( SUM2 ) as SUM_2 from B where FIX between '01-JAN-2020' and '31-DEC-2020' group by ID_A ), CTE_C ( ID_A, MIN_1 ) as ( select ID_A, min( MIN1 ) as MIN_1 from C group by ID_A ) select a.ID, a.VAL, cte_b.SUM_1, cte_b.SUM_2, cte_c.MIN_1 from A join CTE_B on ( cte_b.ID_A = a.ID ) join CTE_C on ( cte_c.ID_A = a.ID ) ; /* FILL DATA **************************************/ set term ^ ; execute block as declare variable ID_A integer; declare variable ID_B integer; declare variable ID_C integer; declare variable XX_N integer; begin ID_A = 0; ID_B = 0; ID_C = 0; while ( :ID_A < 100000 ) do begin ID_A = :ID_A + 1; insert into A ( ID, VAL ) values ( :ID_A, 'VAL#' || :ID_A ); XX_N = 0; while ( :XX_N < 5 ) do begin ID_B = :ID_B + 1; insert into B ( ID, ID_A, SUM1, SUM2, FIX ) values ( :ID_B, :ID_A, :ID_B / 0.1, :ID_B / 0.3, '01-JUL-2020' ); XX_N = :XX_N + 1; end XX_N = 0; while ( :XX_N < 7 ) do begin ID_C = :ID_C + 1; insert into C ( ID, ID_A, MIN1 ) values ( :ID_C, :ID_A, :ID_C / 0.7 ); XX_N = :XX_N + 1; end end end ^ set term ; ^ commit; A - 100000 записей. B - 500000 записей. C - 700000 записей. Ну, что сказать, как и ожидалось: inner join - выполняется быстро (select count(*) from V_ABC с inner join ~0.9 sec на Cor-i7 3.6 HGz + SSD ) left join - уш-да-уш ... (( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:03 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov Агрегат по В можно делать в одной CTE. Я в исходном посте упустил, что в B два ключа для A и суммы, соответственно, считаются по разным. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:06 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov Агрегат по В можно делать в одной CTE. Я в исходном посте упустил... Ну, это уже не столь существенно. А вот если все-же требование на left join , я бы рассмотрел возможность изменения схемы выборки. Уж больно left join в данной схеме тормозной. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:16 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Должны быть все записи из А. Возможна ли ситуация, когда в А есть записи, на которые нет ссылок из С и из B по обеим FK? Если да, то требуется left join, а в моем варианте это, мягко говоря, не очень быстрый вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:34 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov alekcvp Должны быть все записи из А. Возможна ли ситуация, когда в А есть записи, на которые нет ссылок из С и из B по обеим FK? Если да, то требуется left join, а в моем варианте это, мягко говоря, не очень быстрый вариант. В C для каждой записи из A должна быть минимум одна запись, а вот в B - не обязательно, плюс там date between будет, под который может ни одна запись не попадать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:49 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Изначально предусмотрено что ... Надеюсь, идея и ее плюсы и минусы, понятны. Далее надо смотреть по месту. На мой взгляд, странно иметь в таблице B 2 FK на таблицу A - это безусловное применение let join. Впрочем, сложно что-то советовать, не зная предметной области. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:54 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp плюс там date between будет, под который может ни одна запись не попадать. Это условие на inner/left join не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 19:55 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov На мой взгляд, странно иметь в таблице B 2 FK на таблицу A - это безусловное применение let join. Впрочем, сложно что-то советовать, не зная предметной области. Хм... чё-то я задумался... возможно стоит таблицу B разбить на две... но всё равно в этих B1 и B2 может не быть записей для A, т.е. никуда от left join не деться. Может как-то индексами помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:16 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov На мой взгляд, странно иметь в таблице B 2 FK на таблицу A - это безусловное применение let join. Впрочем, сложно что-то советовать, не зная предметной области. Хм... чё-то я задумался... возможно стоит таблицу B разбить на две... но всё равно в этих B1 и B2 может не быть записей для A, т.е. никуда от left join не деться. Может как-то индексами помочь? А обязательно данные получать в одном рекорд-сете? Может быть, для отображения данных на клиенте, дешевле сделать master-detail? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:30 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov А обязательно данные получать в одном рекорд-сете? Может быть, для отображения данных на клиенте, дешевле сделать master-detail? По ТЗ - обязательно... но в таблице A вряд ли будет больше 100000 записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:43 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov А обязательно данные получать в одном рекорд-сете? Может быть, для отображения данных на клиенте, дешевле сделать master-detail? По ТЗ - обязательно... Для обеспечения inner join можно рассмотреть вариант создания в B и C фиктивных записей, что бы каждой записи из A было соответствие в B и C, но это уже, на мой взгляд, костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 20:54 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov Для обеспечения inner join можно рассмотреть вариант создания в B и C фиктивных записей, что бы каждой записи из A было соответствие в B и C, но это уже, на мой взгляд, костыль. ИМХО проще тогда сделать эти поля в A и при изменении записей в B и C триггером это поле обновлять... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:25 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp, А связь A к B и A к C один к одному? Если нет, то этот способ еще хуже. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:28 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov alekcvp, А связь A к B и A к C один к одному? Если нет, то этот способ еще хуже. Нет, один ко многим. А почему хуже? По триггеру пересчитать одно поле одной записи вроде не должно занимать много времени? Почему всё-таки Left Join так катастрофически влияет на производительность? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 21:58 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov, Это забавно. Структура БД Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Запрос Код: plsql 1. 2. 3. 4. 5. 6.
отрабатывает за 3.5 секунды, при Count(*) A = 100К, B1 = 400K, B2 = 700K, C = 150K... Как блин?.. И можно ли это сделать ещё быстрее? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.05.2020, 22:17 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
В общем на данный момент самым оптимальным запросом под мои задачи, из тех что я смог придумать и протестировать, оказался такой: Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3.
Вопрос: добавил к B2 ещё один внешний ключ к B1 (т.к. они всё-таки взаимосвязаны). Запрос стал выполняться на 60% дольше (было 3.5, стало 5.2 секунды)... хотя этот ключ непосредственно в запросе не используется. Это можно как-то нивелировать? Также приветствуются любые советы по оптимизации. Если вдруг кому интересно, то бэкап тестовой базы с тестовыми данными тут (~10 Мб, сама база ~200 Мб). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 01:53 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov alekcvp, А связь A к B и A к C один к одному? Если нет, то этот способ еще хуже. Нет, один ко многим. А почему хуже? По триггеру пересчитать одно поле одной записи вроде не должно занимать много времени? Я имел ввиду, что хуже потому, что усложнится логика. 20578934 ))) Например: добавлена запись в A. В таблице С соответствующих записей нет. Что произойдет в триггере, если в таблицу С будет вставлена запись? Что-то типа Код: sql 1.
И аналогичные действия при апдейте и удалении записи из таблицы C? Хотя, согласен - в принципе, схема работоспособная. Ну, и не допускать ошибочной деактивации триггера ) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:08 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov, Это забавно. Структура БД Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
Запрос Код: plsql 1. 2. 3. 4. 5. 6.
отрабатывает за 3.5 секунды, при Count(*) A = 100К, B1 = 400K, B2 = 700K, C = 150K... Как блин?.. И можно ли это сделать ещё быстрее? :) Я уже предлагал способ - обеспечить в таблице A наличие фиктивных записей, подзпаросы оформить в виде CTE и использовать inner join. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:12 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov, > обеспечить в таблице A наличие фиктивных записей обеспечить для таблицы A наличие фиктивных записей ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 13:15 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Polesov, Запрос Код: plsql 1. 2. 3. 4. 5. 6.
отрабатывает за 3.5 секунды, при Count(*) A = 100К, B1 = 400K, B2 = 700K, C = 150K... А как измерял? Я окончания полного фетча для этого запроса ждал 2 минуты - не дождался. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 14:16 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp В общем на данный момент самым оптимальным запросом под мои задачи, из тех что я смог придумать и протестировать, оказался такой: Код: sql 1. 2. 3. 4. 5. 6. 7.
Код: sql 1. 2. 3. 4. 5. 6. 7.
2. Т.к. полей из С в результате нет, то можно избавиться от агрегата с ней Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 15:14 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
hvlad 2. Т.к. полей из С в результате нет Думаю, ТС, приводя запрос, просто ошибся. В исходном посте сказано, что из таблицы C надо выводить min( FLAG ). Кстати, есть ли существенные минусы в добавлении фиктивных записей в дочерние таблицы для обеспечения использования inner join? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:19 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:40 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov alekcvp Polesov, Запрос Код: plsql 1. 2. 3. 4. 5. 6.
отрабатывает за 3.5 секунды, при Count(*) A = 100К, B1 = 400K, B2 = 700K, C = 150K... А как измерял? Я окончания полного фетча для этого запроса ждал 2 минуты - не дождался. А запрос во время выполнения разве не все данные считает, а тоже порциями? Я имел в виду время выполнения самого запроса. Фетч-то на 100к записей может и сам по себе долго выполняться, нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:53 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
hvlad 2. Т.к. полей из С в результате нет, то можно избавиться от агрегата с ней ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 16:56 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Flashpoke, Охренеть. Спасибо! Я так понимаю этот запрос разворачивает все три таблицы в одну, а потом тупо строит по ней аггрегатный запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:01 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Flashpoke, нужно ещё HAVING MAX(FLAG) IS NOT NULL добавить, иначе запрос не эквивалентен. А вот так будет ещё немножко лучше Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:26 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp, таблицы агрегируются независимо друг от друга, чтобы избежать коррелированных подзапросов. Потом результаты склеивается одну строку для каждого ID_A и берётся полный их список из A. hvlad, вроде же в исходном запросе все записи из таблицы А достаются и показываются? HASH JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:49 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
А я эпично обломался. Решил начать от простого к сложному, хаха :( Внезапно, даты в BETWEEN у меня не задаются в параметрах запроса, а вычисляются из поля таблицы A, причём сложно. Т.е. там есть поле "начало учётного периода", которое содержит в себе число. И интервал Between - это либо прошлый, либо текущий месяц. Т.е. если там "20", а сегодня 10е мая, то надо просуммировать либо с 20 марта по 19 апреля (SUM2), либо с 20 апреля по сегодняшний день, включительно (SUM1). Блин. Что-то я всё больше склоняюсь к кэшированию в A всех сумм и обновлению их по триггерам... ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 17:51 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Flashpoke Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
Исходное условие - должны быть все записи из A. В результат данного запроса не попадут записи из A, которых нет ни в B1, ни B2, ни в C. Тогда уж Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:15 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Polesov Исходное условие - должны быть все записи из A. В результат данного запроса не попадут записи из A, которых нет ни в B1, ни B2, ни в C. Ну by design записи в C создаются одновременно с A, если запись есть в A, но нет ни одной записи в C - это нештатная ситуация, так что если такие записи не будет видно - не страшно. Вот отстутствие записей в B1, B2 - это нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:17 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp Ну by design записи в C создаются одновременно с A Аднака, паходу выявилась масса нюансоффф ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 18:35 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Flashpoke hvlad, вроде же в исходном запросе все записи из таблицы А достаются и показываются? Всю ветку не читал, скучно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 19:18 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
hvlad Flashpoke hvlad, вроде же в исходном запросе все записи из таблицы А достаются и показываются? 22143229 Выяснилось, что в C есть все, что есть в А. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 22:35 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
А вот этого монстра можно как-нибудь оптимизировать?.. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
DFST/DLST Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Polesov Выяснилось, что в C есть все, что есть в А. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2020, 22:48 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
alekcvp А вот этого монстра можно как-нибудь оптимизировать?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 02:11 |
|
Вложенные запросы или как правильно это сделать?
|
|||
---|---|---|---|
#18+
Flashpoke alekcvp А вот этого монстра можно как-нибудь оптимизировать?.. Ну исходный-то за секунду срабатывал, пока я в него кривыми ручками не залез :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2020, 02:13 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1560343]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
others: | 263ms |
total: | 549ms |
0 / 0 |