|
|
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Здраствуйте, у меня такой вопрос, возможно ли в базе MySQL хранить запросы на выборку ввиде хранимых процедур? И если да, то как они обрабатываются? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 22:43:36 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
VIEW Подойдет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 22:49:44 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
мб, а ещё есть что нибудь есть? например на русском?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2013, 22:50:58 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozent, лучше подучите английский. Серьёзно. Ну и насчёт именно ХП читайте здесь . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 05:15:24 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
tanglirDozent, лучше подучите английский. Серьёзно. Ну и насчёт именно ХП читайте здесь . ну что-то вроде есть и на русском: http://www.opennet.ru/docs/RUS/mysqlpro/sto_proc.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 05:18:01 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbc, для 5.5 уже не катит: авторИнструкции SIGNAL и RESIGNAL в настоящее время не обеспечиваются.Причём понять, что это мануал по 5.1, сходу не удастся - придётся полистать оглавление :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 05:31:16 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылки, посмотрел, конечно можно и прям в процедурах хранить выборку и в View таблицах, но и тут и там не учитывается одно, что условие после WHERE может быть разным и перечислять все входящие параметры, по крайней мере долго и всё равно можешь не предугадать... Ну или передавать строку с готовым условием, но это не правильно насколько я могу себе это представить... Поэтому всё таки останавливаюсь на хранении Select`ов в клиенте, там же будет динамически собираться условие для выборки, мне кажется так будит намного удобнее.. Если я абсолютно не прав и селекты можно хранить в процедурах с условие что строка после WHERE собирается динамически, то пожалуйста поделитесь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 09:37:03 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozent, Процедуры есть в мускле с кажется 5 ой версии. Нормально работают. Как обрабатываются — не очень понятный вопрос, создашь процедуру, в ней — запросы, select, можно несколько, вызываешь с помощью call, получаешь один или несколько наборов данных, также возможны входные и выходные параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:24:50 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozent, Поэтому всё таки останавливаюсь на хранении Select`ов в клиенте, там же будет динамически собираться условие для выборки, мне кажется так будит намного удобнее.. Не будет, уж проверь на слово. А что касается динамического формирования текста запросов — лучше не надо так делать, про многим причинам. Лучше напиши генераторы процедур. Я вот тут недавно на cheetah такой наваял — очень классно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:30:52 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
MasterZivDozent, Поэтому всё таки останавливаюсь на хранении Select`ов в клиенте, там же будет динамически собираться условие для выборки, мне кажется так будит намного удобнее.. Не будет, уж проверь на слово. А что касается динамического формирования текста запросов — лучше не надо так делать, про многим причинам. Лучше напиши генераторы процедур. Я вот тут недавно на cheetah такой наваял — очень классно. По каким причинам? Неужели есть ещё лучшая реализация чем хранить код запроса на выборку в клиенте? Присвоил запрос со всеми полями и джойнами переменой а потом по необходимости по условиям собарл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:34:09 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
собрал, sql:= conssql+ 'where' + filter; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:34:51 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozent, Код: sql 1. 2. 3. 4. Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:35:58 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Dozent, Код: sql 1. 2. 3. 4. Код: sql 1. 2. 3. Ну создам я View таблицу мне всё равно нужно селект к ней делать! Ну вот смотрите у меня на форме есть таблица которая отображает запросом Select c 15 полями из 9 таблиц, обьединёные джойнами. На форме возможно фильтрация по фамилии, дате рождения и ещё нескольким условиям... Захочет пользователь взять дату рождения, дату визита и ещё какоенить условие и в клиенте буду собирать строку фильтра Код: pascal 1. 2. 3. 4. 5. Что то в этом роде или допустим ещё какието криетрии, в коде будет собиратся полный SQL запрос. Я же хотел реализовать хранения запроса на выборку в базе ввиде процедуры. чтобы сделать Код: sql 1. но понял что мне в процедуре придётся писать заранее Код: sql 1. 2. и допустим для какойто выборке не нужна половина параметров как быть? если передавать null возможно что результат будет не правильный... Вот почему я решил реализовать состовление запроса в коде, мне кажется так удобнее, повторюсь если я не правильно что то поинмаю поясните, подскажите если вам не трудно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 12:04:47 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
DozentMasterZivDozent, Поэтому всё таки останавливаюсь на хранении Select`ов в клиенте, там же будет динамически собираться условие для выборки, мне кажется так будит намного удобнее.. Не будет, уж проверь на слово. А что касается динамического формирования текста запросов — лучше не надо так делать, про многим причинам. Лучше напиши генераторы процедур. Я вот тут недавно на cheetah такой наваял — очень классно. По каким причинам? Неужели есть ещё лучшая реализация чем хранить код запроса на выборку в клиенте? Присвоил запрос со всеми полями и джойнами переменой а потом по необходимости по условиям собарл Есть. И их много. Сейчас укажу только главную — если нашел ошибку в запросе, её можно исправить в одном месте и не пересобирать клиента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 12:05:05 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Можно хранить запросы в ресурсном файле... Но я не хочу так делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 12:16:09 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Хотя, я возможно имею не правильное представление, к этому клиенту на Delphi ещё добавится некая веб морда, правда пока смутно представляю как её реализовать... там тоже как-то нужно будет хранить селекты... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 12:26:42 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Подумал, классно! Но тут понял что конечно передать один параметр это не сложно, а как быть если в условии выборке должны будут участвовать несколько? придётся каждый писать и выглядеть это будет примерно так WHERE worktab.id_w= id AND worktab.id_sotr=ids AND worktab.flag_end=1; или допустим просто clienttab.fio like'петя%' получается надо будет делать все входящие параметры! Получается мне надо либо собирать строку условия фильтрации в клиенте и передавать её сюда подумал я(но сразу же отказался от этой идеи), либо както это делать в самой процедуре (но как незнаю) на данный момент самый хороший выход для меня это формировать запрос полностью в коде... Но если вы подскажите как правильно сделать в процедуре на сервере буду очень благодарен и тут же попутный вопрос, не изобретаю ли я велосипед или не делаю ли я что-то бредовое? Если да, то как нужно правильно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:07:42 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
DozentБудет клиент на Делфи,а так же есть вероятность что надо будет сделать веб приложение, чтобы всё это же работало через браузер (как реализовывать это пока незнаю, пока нет точной позиции) Ну вот я подумал зачем я буду сначало в делфи клиенте писать эти запросы, потом ещё гденить... Так тем более, процедуры тут как раз то, что надо. Они хранятся один раз, в БД, в удобном месте. DozentПодумал, классно! Но тут понял что конечно передать один параметр это не сложно, а как быть если в условии выборке должны будут участвовать несколько? придётся каждый писать и выглядеть это будет примерно так получается надо будет делать все входящие параметры! Получается мне надо либо собирать строку условия фильтрации в клиенте и передавать её сюда подумал я(но сразу же отказался от этой идеи), либо както это делать в самой процедуре (но как незнаю) на данный момент самый хороший выход для меня это формировать запрос полностью в коде... Но если вы подскажите как правильно сделать в процедуре на сервере буду очень благодарен и тут же попутный вопрос, не изобретаю ли я велосипед или не делаю ли я что-то бредовое? Если да, то как нужно правильно сделать? Почему ты хочешь всё сделать в ОДНОЙ процедуре ? Сделай их много, 10, 20, 40. На все случаи жизни. На каждый набор параметров. Хотя я уверен, что вменяемых критериев поиска у тебя будет не более 5-10. Но если будет больше -- сделай их хоть 100. В чём проблема ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:31:50 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
DozentНо если вы подскажите как правильно сделать в процедуре на сервере буду очень благодарен и тут же попутный вопрос, не изобретаю ли я велосипед или не делаю ли я что-то бредовое? Если да, то как нужно правильно сделать? Это тоже можно, это называется dynamic exec, кажется, есть оно и в mySQL, идея в том, чтобы в текстовой переменной собрать текст запроса, а затем его выполнить. Но это сложно, это чревато многими проблемами, и так лучше не делать. Лучше просто написать 10 процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:34:07 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Вот тут напр. написаны примеры dyn exec in a proc. http://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure http://stackoverflow.com/questions/2974120/mysql-dynamic-sql-inside-stored-procedure http://habrahabr.ru/post/52983/ http://rpbouman.blogspot.ru/2005/11/mysql-5-prepared-statement-syntax-and.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:37:13 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду читать!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 14:42:49 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Ещё раз: почему бы не сделать VIEW с одним селектом (указанным в процедуре) и без WHERE? А потом формировать условия фильтрации и включать их в запрос Код: sql 1. 2. DozentНу создам я View таблицу мне всё равно нужно селект к ней делать!VIEW — это не таблица, это некий аналог вложенного подзапроса, со всеми вытекающими следствиями (индексы, план выполнения, актуальность данных, блокировки и т.п.). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:05:12 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Где-то вычитал вчера, что они тормозят... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:07:35 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
DozentГде-то вычитал вчера, что они тормозят...Тормозят неоптимизированные запросы, а не view. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:19:23 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, но всё равно мне нужно будет вытягивать данные из View запросом. так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:23:30 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
DozentГде-то вычитал вчера, что они тормозят... Вью выполняется (по крайней мере до 5.1) полностью и лишь потом выполняется where к ней. В Оракле есть так называемый предикате-пуш, когда условия фильтров Оракле засовывает во вью и делает все быстро. Похоже, вы немного пере-планируете заранее. Начинайте строить аппликацию и походу будете анализирувать и строить запросы. После 3-4 запросов поймете надо лиделать универсальную динамику или обойдетесь десятком конкретных запросов. А то понастроите тут динамический Тадж-Махал а потом понадобится лишь летний домик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:26:30 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007VIEW — это не таблица, это некий аналог вложенного подзапроса, со всеми вытекающими следствиями (индексы, план выполнения, актуальность данных, блокировки и т.п.).К сожалению, далеко не со всеми, особенно в MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:42:42 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbcDozentГде-то вычитал вчера, что они тормозят... После 3-4 запросов поймете надо лиделать универсальную динамику или обойдетесь десятком конкретных запросов. А то понастроите тут динамический Тадж-Махал а потом понадобится лишь летний домик. ну возможны селекты примерно по 16 параметрам... Для этого придётся много запросов делать, я не считаю это норм решением, мб лучше обрабатывать в самой процедуре о наличии параметров? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:48:04 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007DozentГде-то вычитал вчера, что они тормозят...Тормозят неоптимизированные запросы, а не view.Не все так просто. View Processing Algorithms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 15:51:53 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007пропущено... Тормозят неоптимизированные запросы, а не view.Не все так просто. View Processing Algorithms Спасибо, как раз начал искать, где почитать:) Однако вроде бы в приведенном в процедуре запросе будет задействован алгоритм MERGE, что не противоречит моему ответу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 16:17:36 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
В Oracle все прекрасно решается с помощью динамического SQL - строится запрос который помещается в текстовую переменную а дальше ( OPEN ... FOR ... ; FETCH ... INTO ... ;) либо execute immediate - а mysql попробуйте посмотреть в сторону (PREPARE ... FROM ...; EXECUTE ...;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 16:32:47 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
garbushkaстроится запросСтроится кем именно? А так - динамические запросы и в MySQL есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 16:43:13 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007Однако вроде бы в приведенном в процедуре запросе будет задействован алгоритм MERGE, что не противоречит моему ответу...Дело же не в конкретном запросе. Топикстартеру нужна система, пригодная для широкого диапазона случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 16:45:13 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozentjavajdbcпропущено... После 3-4 запросов поймете надо лиделать универсальную динамику или обойдетесь десятком конкретных запросов. А то понастроите тут динамический Тадж-Махал а потом понадобится лишь летний домик. ну возможны селекты примерно по 16 параметрам... Для этого придётся много запросов делать, я не считаю это норм решением, мб лучше обрабатывать в самой процедуре о наличии параметров? тогда делайте динамически, как вам подсказали уже человек пять. Разницы практически никакой делать динамику в процедуре или на клиенте. Где вам удобнее там и делайте. (в плане програмирования, клинетские языки удобнее, в плане архитектуры с разными клентами -- на процедурах --- лучше) Идея -- элементарная, уже прожеваняя выше -- сколько пришло параметров, столько филтров (или жоинтов, как там у вас по структуре получается) и склеивайте динамически. быстрее сделать чем обсуждать :-) Успехов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:08:24 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007Однако вроде бы в приведенном в процедуре запросе будет задействован алгоритм MERGE, что не противоречит моему ответу...Дело же не в конкретном запросе. Топикстартеру нужна система, пригодная для широкого диапазона случаев.Я понял, что это не совсем так. Есть «отчетный» запрос, к которому надо гибко прикручивать фильтрующие условия. Идеальная ситуация для view (точнее, для merge-view), я так думаю... И накручивать кучу процедур или кучу параметров в одной процедуре вместо естественного указания фильтров в WHERE просто излишне. А иначе — объясните, нафига вообще придумали view ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:11:25 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007пропущено... Тормозят неоптимизированные запросы, а не view.Не все так просто. View Processing Algorithms Обана! а вот Алгоритм-Мерже это уже похоже на "предикате-пуш". Отлично! надо будет внимательно потестировать. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:17:37 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbcmiksoftпропущено... Не все так просто. View Processing Algorithms Обана!Да ссылка-то баянистая. У нас по форуму уже много раз пробегала.javajdbc а вот Алгоритм-Мерже это уже похоже на "предикате-пуш".Не совсем так. MERGE, конечно, для "предикате-пуш" нужен. Но вовсе не гарантирует. Смутно припоминаю, что "предикате-пуш" появился (или был улучшен?) только в версии 5.6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:37:32 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbc, может, и похоже, но работает только в простейших случаях/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:43:02 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
tanglir, miksoft , даже если это и для простейших случаев -- уже большой шаг вперед. У меня сейчас много агрегационных расчетов и вью было бы очень удобным средством унификации -- но произовидутельноть сильно падает -- приходится почти повторять код в нескольких местах Если Алгоритм-Мерге поможет избежать полного пробега по в'ю -- хоть и в простых случаях, мне это сильно поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 17:58:10 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbc, да подняли не один вариант, но так ни к какому и не пришли... авторТопикстартеру нужна система, пригодная для широкого диапазона случаев. В точку.. Что я из этого всего вывел для себя, 1.Мало понял про View и их реализацию. Не понимаю помогут они мне или нет. 2.Понял что возможно придётся писать гиганскую процедуру которая будет проверять все параметры и пропускать только те которые удовлетворяют условию (как это напистаь впроцедуре пока тоже не знаю) 3. ЧТо скорее всего остановлюсь на селектах в коде, т.к. хорошего удобного метода для себя пока не увидил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 00:19:08 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozentкак это напистаь впроцедуре пока тоже не знаюточно так же, как и на клиенте только синтаксис, естественно, будет немного другой :) Dozent Код: sql 1. ну и в чём затруднения? передавайте в процедуру строку типа "paramA;operA;valueA;;paramB;operB;valueB1;valueB2;;...", операции разрешите только "=", "between" и "like", проверяйте, чтобы все параметры присутствовали в исходных таблицах, и стройте запросы на здоровье... или вот тут автор Код: sql 1. может быть что-то похитрее простых сравнений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 05:18:08 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
tanglir, не совсем. На клиенте можно сделать "автомат" по принципу if( параметр_задан ) { прикрутить блок where в собираемый селект } что позволяет сделать "машинку" автопостроителя запросов по фильтрам, в т.ч. и с добавками произвольно сложных подзапросов к зависимым сущностям (left join-ы у автора в примере)... наиболее интересно (но дорого - через избыточный ООП) реализовано в Yii для PHP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 07:58:01 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
javajdbcDozentГде-то вычитал вчера, что они тормозят... Вью выполняется (по крайней мере до 5.1) полностью и лишь потом выполняется where к ней. Это гон. У view полно недостатков, связанных с производительностью, но именно в такой формулировке это утверждение неверно. Я бы НЕ советовал применять VIEW топикстартеру. Не потому что view плохие, а просто потому, что процедуры лучше и удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:23:20 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Dozent ну возможны селекты примерно по 16 параметрам... Для этого придётся много запросов делать, я не считаю это норм решением, мб лучше обрабатывать в самой процедуре о наличии параметров? Это абсолютно нормальное решение. Не бойся кол-ва запросов, это не проблема. Хоть 100 их будет (но их не будет 100). Главное -- чтобы они были быстрыми, хорошо работали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:25:12 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Cygapb-007 А иначе — объясните, нафига вообще придумали view Да ни за чем. В общем -- абсолютно лишняя штука в РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:28:01 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Arhat109tanglir, не совсем. На клиенте можно сделать "автомат" по принципу if( параметр_задан ) { прикрутить блок where в собираемый селект } что позволяет сделать "машинку" автопостроителя запросов по фильтрам, в т.ч. и с добавками произвольно сложных подзапросов к зависимым сущностям (left join-ы у автора в примере)... наиболее интересно (но дорого - через избыточный ООП) реализовано в Yii для PHP. Кто мешает ровно то же самое сделать в хранимой процедуре? У него будет два клиента БД -- Web-сервер и обычный desktop-клиент. В таком случае придётся писать этот генератот запросов два раза -- один раз для desktop-клиента, другой раз --- в коде Web-сервера. И потом это всё ещё отлаживать, исправлять и поддежривать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:32:51 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо за ответы, подсказки, рассуждения... Т.к. о веб интерфейсе пока нет точной позиции , нужно будет или нет, буду делать на данный момент запросы в коде! Ведь для начала надо сделать хотя бы десктоповый клиент (да и время поджимает), а уже потом как согласятся на веб морду, буду решать как лучше сделать... tanglirDozentкак это напистаь впроцедуре пока тоже не знаюточно так же, как и на клиенте только синтаксис, естественно, будет немного другой :) Dozent Код: sql 1. ну и в чём затруднения? передавайте в процедуру строку типа "paramA;operA;valueA;;paramB;operB;valueB1;valueB2;;...", операции разрешите только "=", "between" и "like", проверяйте, чтобы все параметры присутствовали в исходных таблицах, и стройте запросы на здоровье... или вот тут автор Код: sql 1. может быть что-то похитрее простых сравнений? да может быть и in() да я примерно представляю, только как формировать строку условия не понятно?)) там сразу нажуно делать сравнение или написать WHERE @Строковая_переменая А перед этим условиями составить эту строковую переменую?(не хватает опыта работы с хранимыми процедурами) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 10:20:10 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Да, собственно ничего не мешает, акромя разбора параметров в ХП "на лету" и работу через динамический скуль (медленно и печально и то и другое, хотя для кого как, кому и улитка - спринтер ) . :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 11:35:25 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#18+
MasterZivjavajdbcпропущено... Вью выполняется (по крайней мере до 5.1) полностью и лишь потом выполняется where к ней. Это гон. У view полно недостатков, связанных с производительностью, но именно в такой формулировке это утверждение неверно. ...не шуми, контекст почитай, да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 17:23:54 |
|
||
|
хранение Select запросов в базе
|
|||
|---|---|---|---|
|
#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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 23:41:15 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1836065]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 292ms |

| 0 / 0 |
