|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
kaktus1983Компактный вариант решения: За такое в продакшене увольняют по несоотвествию. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 01:15 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Ivan_Pisarevskyубрать нахрен широченную горизонтальную портянку решил на ночь посмотреть фильм ужасов. Как я понял, в таблице input_hour_data по 32 столбца FL_CL_??, T1_CL_??, T2_CL_??, T3_CL_??, T4_CL_??, T1_VG_??, FV_VG_?? ну или большинство по 32 столбца (или 27), и меньшинство по 7 столбцов. Это какой-то кабздец, товарищи. 150 столбцов, как минимум? Однако, до предела не доехал https://firebirdsql.org/en/firebird-technical-specifications/ Maximum number of columns per table Depends on data types used. (Example: 16,384 INTEGER (4-byte) values per row.) я так понимаю, перед автором стояла задача - или заливать херову пропасть значений в одну строку, или получить в n (5?) раз больше записей. А скорее всего с датчиков с самого начала стали просто валить все в одну запись. А чё с этим делать - "потом разберемся". Однако, правила разработки БД: 1. определяем типы и структуры хранимых данных (входящих) по исходным данным 2. смотрим, как мы это будем обрабатывать и извлекать 3. если на этапе 2 кривизна, возвращаемся к пункту 1. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 01:49 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
kdvА скорее всего с датчиков с самого начала стали просто валить все в одну запись. А чё с этим делать - "потом разберемся". Однако, правила разработки БД: 1. определяем типы и структуры хранимых данных (входящих) по исходным данным 2. смотрим, как мы это будем обрабатывать и извлекать 3. если на этапе 2 кривизна, возвращаемся к пункту 1. Я смотрю тут все стали такие академичные :) А если было так - вот у нас система, есть 3 датчика, нужно автоматизировать. Нет, больше датчиков не будет. Через год. У нас тут появилось еще 100-500 датчиков, нужно и с них снимать показания тоже. И да, это нужно уже вчера. Вместо того что бы шагать по новым граблям с неопределенным сроком реализации, экстенсивно расширяем уже работающее решение, и работаем дальше. Да, недостатки есть, как и везде. Разберемся по ходу дела, главное продашкн что бы работал. Обычное дело. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 05:59 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Мимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми Может быть это кому-то будет красивее, может это что-то улучшит в оптимизации, но эта часть работает и не является камнем преткновения. Чувство красоты у каждого разное. Из перлов состоит только перловая каша. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 06:02 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraks> Из перлов состоит только перловая каша. В мемориз! (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 08:34 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraks, Вы довольно точно описали ситуацию, у меня аналогичное мнение. К сожалению, от гуру часто получаешь не советы и варианты решения, а только критиканство ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 08:42 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Когда ты "гуру" с первого сообщения сразу ставишь в рамки своего видения решения поставленной задачи не описывая собственно постановку, ты ничего иного и не получишь. Ибо если ты уже встал на неверный путь при наличии более правильных вариантов решения, то ни один гуру тебе не укажет правильного, т.к. ты описал только свой путь, который может быть уже неверным. Посему вопросы в стиле "мне надо что-то типа такого" без описания собственно начальной постановки задачи в виде взаимодействия физических объектов и их представления в виде таблиц ни к чему путному не приведут. Это так к слову. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 09:19 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Мимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми Кстати, она от этого займет больше строчек чем сейчас. Код: plsql 1. 2. 3. 4.
Код: plsql 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.
Наглядно видно что нифига лучше не стало. Каков будет твой вариант? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 10:07 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraks> Каков будет твой вариант? Какие фаши таказательства? (с) Нет смысла обсуждать сферического коня в гипотетическом вакууме, надо задачу нормально поставить и обмозговать, а потом бросаться лабать ХП и запросы (возможно, у автора нет такой возможности, ибо горит и нужно вчера). 24 часа (насколько я понял), конечно, довольно пограничный случай, но я бы, в первую очередь, подумал о том, чтобы хранить всю эту портянку не в ширину (в 24 поля), а в высоту - запросы стали бы сложнее, конечно, но не такие спагетти-подобные. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 10:29 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
o_v_a, Не всегда вопрос можно поставить глобально: если на данный момент, по ряду причин "имеем что имеем" и требуется помощь в локальном решении, то вопрос в стиле "мне надо что-то типа такого" вполне уместен (на мой взгляд, конечно). Возвращаться к вопросу перепроектировки БД при любой "сложности" можно бесконечно. P.S. Всем спасибо за замечания и предложения ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 10:49 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамfraks> Каков будет твой вариант? Какие фаши таказательства? (с) Нет смысла обсуждать сферического коня в гипотетическом вакууме, Мимопроходящий высказался по поводу широкой пачки if и сказал что лучше свернуть в один запрос с case. И именно это утверждение я рассмотрел, а не сферы в вакуууме. В моем варианте и по моим понятиям - лучше не стало. Преложил показать свои варианты. МП, как обычно, "выше этого". Лично для меня, когда запрос целиком по высоте не помещается на экране - очень некомфортно, теряется обзорность структуры процедуры. А вот так в ширину - тостаточно рассмотреть только один запрос и проконтролировать изменения индексов в строках. Расположено все друг над другом, проверять легко. Гаджимурадов Рустамнадо задачу нормально поставить и обмозговать, а потом бросаться лабать ХП и запросы (возможно, у автора нет такой возможности, ибо горит и нужно вчера). 24 часа (насколько я понял), конечно, довольно пограничный случай, но я бы, в первую очередь, подумал о том, чтобы хранить всю эту портянку не в ширину (в 24 поля), а в высоту - запросы стали бы сложнее, конечно, но не такие спагетти-подобные. Честно говоря, не горю желанием разбираться в вопросе ТС. Однако и критика ТС со стороны присутствующих иногда весьма неконструктивна. Что и пытался рассмотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 11:04 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
16.11.2017 11:04, fraks пишет: > В моем варианте и по моим понятиям - лучше не стало. мои труды читать надо! (С)-проф.Выбегалло Амвросий Амбруазович а ты до конца не дочитал. всю эту хрень заменить одним ЗАПРОСОМ, на case-ах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 11:42 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraksЛично для меня, когда запрос целиком по высоте не помещается на экране - очень некомфортно, теряется обзорность структуры процедуры. А вот так в ширину - тостаточно рассмотреть только один запрос и проконтролировать изменения индексов в строках. Расположено все друг над другом, проверять легко. Честно говоря, не горю желанием разбираться в вопросе ТС. Портянки в ширину, конечно, удобнее смотреть и править, чем в высоту (хотя и case можно в ширину писать, в принципе), но оптимальность решения же не только от комфорта для глаз зависит. :) Без желания разбираться в проблеме ТСа (у меня и у самого его особо нет) - это досужие разговоры в стиле "как подбирать калор" и "зеленый лисапед лучше желтого". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 12:42 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Мимопроходящий16.11.2017 11:04, fraks пишет: > В моем варианте и по моим понятиям - лучше не стало. мои труды читать надо! (С)-проф.Выбегалло Амвросий Амбруазович а ты до конца не дочитал. всю эту хрень заменить одним ЗАПРОСОМ, на case-ах. Если на твоем языке процедура называется "ВСЯ ЭТА ХРЕНЬ" и предлагаешь ее завернуть в один запрос с case - то получится полный алес капут. В нынешнем виде ее можно нормально отладить, и быть уверенным в результатах котрые она выдает. В виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:23 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraks, Лично мне отлаживать такое даже не хочется. Хотя бы уж в ES завернуть, и то приятнее глазу будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:29 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
16.11.2017 14:23, fraks пишет: > В виде развесистого запроса малейшее неверное движение в сторону... — А эта бредятина откуда? — Изречения из «Упанишад». — А что такое «Упанишады»? — Не знаю… (C) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2017, 14:32 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraksВ виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата. В виде развесистого запроса при малейшем движении в сторону максимум что мы можем получить - изменение плана. Причём в 70% случаев в сторону улучшения быстродействия. А процедура как долбила тупо всё подряд, так и будет. Не, я не противник селективных процедур как таковых, дело всегда в нюансах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 01:46 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаfraksВ виде развесистого запроса малейшее неверное движение в сторону - и получим гавно вместо результата. В виде развесистого запроса при малейшем движении в сторону максимум что мы можем получить - изменение плана. Причём в 70% случаев в сторону улучшения быстродействия. А процедура как долбила тупо всё подряд, так и будет. Не, я не противник селективных процедур как таковых, дело всегда в нюансах. Да? Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 05:24 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraksМимопроходящийвсю эту хрень построенную на if-ах заменить одним select-ом с case-ми Кстати, она от этого займет больше строчек чем сейчас. Код: plsql 1. 2. 3. 4.
Код: plsql 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.
Наглядно видно что нифига лучше не стало. Каков будет твой вариант? Оно можно и так написать - Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но, ИМХО, те же яйцы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 08:02 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraks, ну и какой смысл выкладывать сюда запрос из MS SQL да ещё с прибитыми гвоздём хинтами? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 08:34 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
fraksДа?Если уверен, что это развесистый запрос, то уж извини, но ты просто жизни не видел. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:22 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
ExterisОно можно и так написать - Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Но, ИМХО, те же яйцы. Вот именно. Причем все же хуже - в столбцах тут разные поля, а в массиве IF меняется только номер поля, а буквы те же. Гораздо проще увидеть косяк. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 09:58 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
Симонов Денисfraks, ну и какой смысл выкладывать сюда запрос из MS SQL да ещё с прибитыми гвоздём хинтами? Пример развесистого запроса, не более того. Когда я пытался повторить такую же структуру на Firebird - получалось примерно такая же развесистая клюква. Зарубил эту схему нафиг, из-за сложности в понимании работы запросов. Хотя есть люди которые с ней работают. Запрос взят у Тенцера, 2001 году примерно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 10:01 |
|
Подзапрос в параметре процедуры
|
|||
---|---|---|---|
#18+
WildSeryfraksДа?Если уверен, что это развесистый запрос, то уж извини, но ты просто жизни не видел. У каждого своя жизнь и понимание уровня сложности. Для меня он - сложный, и я не пишу того что мне же будет сложно понять. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2017, 10:02 |
|
|
start [/forum/topic.php?fid=40&msg=39554842&tid=1561334]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 177ms |
0 / 0 |