|
|
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
есть хранимка у неё входной параметр техт - 1,2;2,2;............. т.е. пара цифр (int) разделенные запятой,эти пары разделены ; таких пар от 1 до хз задача вставить их таблицу Код: sql 1. 2. 3. 4. 5. 6. 7. пару решения я знаю, но не нравятся они мне. надо что-то по-красивее, по-оригинальнее, по-проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 21:46:46 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяесть хранимка у неё входной параметр техт - 1,2;2,2;............. т.е. пара цифр (int) разделенные запятой,эти пары разделены ; таких пар от 1 до хз задача вставить их таблицу Код: sql 1. 2. 3. 4. 5. 6. 7. пару решения я знаю, но не нравятся они мне. надо что-то по-красивее, по-оригинальнее, по-проще есть одна мулька, точно по-оригинальнее, на любителя -- по-красивее и однозначно по-НЕпроше. Если хранимка работает как надо и не портит вам эстетику до рвотного рефлекса, то оставьте ее в покое ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 22:18:43 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
только идея, не проверял Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 22:21:04 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадя, Как бы и таблица дебильная, и задача дебильная, красивого решения тут вообще быть не может. Красивое решение -- переделать в первую очередь таблицу, устранив аномалию нарушения 1ой нормальной формы, а далее --уже будешь вставлять записи обычным INSERT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 22:26:32 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадя, "по красивее", "по оригинальнее", "по проще" - выберите 2 из трех. :) Кстати, а где текст "хранимки", дабы понять что есть "некрасиво", "не оригинально" и "не просто", гадать предложите? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2013, 22:32:59 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
miksoftтолько идея, не проверял Код: sql 1. 2. 3. 4. 5. 6. 7. это работает и мне пока нравится (надо проверить конкретной реализации) , у меня тоже была мысль в REPLACE, но более грубо использовалось, забыл, что values можно так использовать... спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 06:45:18 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
Arhat109вадя, "по красивее", "по оригинальнее", "по проще" - выберите 2 из трех. :) Кстати, а где текст "хранимки", дабы понять что есть "некрасиво", "не оригинально" и "не просто", гадать предложите? выбираю 3 из 3 !!! miksoft - супер!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 07:15:25 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
а так как эту строку я формирую на андроиде, то никто не мешает сформировать и передать её в таком виде (1,2);(3,5)..... то ваще получается просто тут из двух красивостей надо выбрать более оптимальное, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 08:42:03 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадя, :) Хорошо, что вам понравилось. Мне просто осталось непонятным заради чего делать хранимку, когда тоже самое легко отправить с клиента, да ещё и забинтовав параметры от инъекций... не люблю ХП "в принципе". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 09:40:51 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
2Arhat109 ...ты просто не умеешь их готовить... помимо защиты они могут много чего делать. особенно когда клиент слабый, хотя б подготовка данных для деревьев. разбив задачу на две части (клиент, сервер) много упрощается, код на клиенте становится проще, нагляднее. и если не использовать PREPARE то хранимка выполняется быстрее, чем переданная на сервер sql строка. и как правило с хранимками число обращений к серверу заметно уменьшается отладкау намного проще производить, особенно используя dbForge, где хранимки можно дебажить. а такая приятная вещь как курсор в mysql? ну и трафик к серверу меньше :) я вкусил их ещё юзая mssql, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 10:07:39 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадявыбираю 3 из 3 !!! miksoft - супер!!!!На самом деле для боевых условий мой вариант не так уж хорош. Как минимум, нужно что-то делать с инъекциями. Еще можно налететь на превышение max_allowed_packet. Можно налететь на ошибку синтаксиса, если на андроидной стороне произойдет сбой в формировании строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 10:42:37 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяа так как эту строку я формирую на андроиде, то никто не мешает сформировать и передать её в таком виде (1,2);(3,5).....Так больше символов получается. А для плохой связи это может быть заметно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 10:44:47 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяа такая приятная вещь как курсорну фу :) использую только там, где без них ну вообще никак (читай "где вместо них надо громоздить семиэтажные джойны по неравенствам с переменными и т.п.") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 10:44:55 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяя вкусил их ещё юзая mssql, И что ниразу не уперся в какие-нибудь проблемы ? Приходилось писать функции на C из-за отсутствия привычных ? А то, что процедуры не компилируются, это нормально? А то, что триггер на действие всего один, это нормально ? Курсоры эти выполняют весь запрос в момент открытия и считывают все во временную таблицу. Кроме того, однонаправленные вперед и только для чтения. Обычно все, кто обвиняют mysql в недоразвитости, как раз мигрируют с серьезных баз, не обнаруживают привычного и начинается. Вот просто нет такой культуры использования pl/sql и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:13:07 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
miksoftвадяа так как эту строку я формирую на андроиде, то никто не мешает сформировать и передать её в таком виде (1,2);(3,5).....Так больше символов получается. А для плохой связи это может быть заметно. это я и имел ввиду , когда говорил про оптимальный вариант насчет инъекций, смотря на каком этапе их ожидать. как минимум разделитель ; можно заменить на любой другой, сделать проверку на отсутствие ; в этих данных в самой хранимке. ну и передача данных на сервер mysql по wss протоколу через прослойку на сервере, типа tomcat. ну а если взломали код...тут можно нагородить защиту по ip и пр... но при хранимках бороться с инъекциями проще, в самой хранимке можно устроить анализ на инъекци. даже если взломан код клиента, хранимки защищают саму структуру базы, в каждой хранимке входные данные имеют определённую структуру и если они не соответствуют ей? просто не выполнить хранимку и все. это если строковые данные , а если числовые - сам сервер даже не даст зайти в хранимку. авторЕще можно налететь на превышение max_allowed_packet. Можно налететь на ошибку тут проще, хотя надо всегда это отслеживать, в моём случае при нормальной работе клиентской части это трудно достигнуть. авторну фу :) использую только там, где без них ну вообще никак (читай "где вместо них надо громоздить семиэтажные джойны по неравенствам с переменными и т.п.") согласен, что курсоры редко используются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:25:38 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
авторИ что ниразу не уперся в какие-нибудь проблемы ? Приходилось писать функции на C из-за отсутствия привычных ? А то, что процедуры не компилируются, это нормально? А то, что триггер на действие всего один, это нормально ? Курсоры эти выполняют весь запрос в момент открытия и считывают все во временную таблицу. Кроме того, однонаправленные вперед и только для чтения. еще не разу не упираля в проблемы с хранимками, было по началу, когда переходил с mssql -там для деревьев, готовый мехонизм, специализированный, и прочие вкусности, которых нет mysql, но в mysql есть свои вкусности... смог обойтись всеми фунциями mysql, это по моим задачам. как-то обходился без триггеров в хранимках, очень просто, всё можно делать в хранимке и без триггера. курсоры разговор отдельный, хорошо что они есть, их применять надо по месту. есть пара проектов - только хранимки и никаких проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 11:40:28 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадя, :) возможно. Я просто считаю что "хранимки" - зло "по определению" для писателей с ЯП, которым трудно нормально перейти на теорию множеств (Реляционную Алгебру). РМД о них ничего не знает и это - правильно. Сам ХП использую только когда надо из крона или какого ещё демона заставить Мускуль сделать "что-то полезное"... то там, где ввод человеческого фактора отсутствует "по оперделению". Да и мои тесты показывали, что ХП уступает запросу с клиента в среднем на 30% даже с предпраред... но это уже, так в порядке оффтопа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 12:02:48 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
поискал для самообразования Особенности использования При первом запуске хранимой процедуры, она компилируется и в дальнейшем обращение к этой хранимой процедуре осуществляется быстрее. Рекурсивные процедуры по-умолчанию заблокированы, но могут допускаться на сервере, предварительно установив переменную max_sp_recursion_depth в ненулевое значение. Функции же не могут быть рекурсивными. отсюда http://computer-science-labs.blogspot.ru/2012/09/mysql-stored-procedures-functions.html В большинстве СУБД при первом запуске хранимой процедуры она компилируется (выполняется синтаксический анализ и генерируется план доступа к данным). В дальнейшем её обработка осуществляется быстрее. В СУБД Oracle выполняется интерпретация хранимого процедурного кода, сохраняемого в словаре данных. Начиная с версии Oracle 10g поддерживается так называемая естественная компиляция (native compilation) хранимого процедурного кода в Си и затем в машинный код целевой машины, после чего при вызове хранимой процедуры происходит прямое выполнение её скомпилированного объектного кода. http://ar871.narod.ru/TEOR/14.htm Также хранимые процедуры могут ускорять работу приложения за счет того, что они хранятся на сервере БД в скомпилированном виде, что предотвращает потерю времени на повторный разбор и интерпретацию SQL-запроса. http://hostinfo.ru/articles/825/ Повышение скорости работы БД. Процедуры хранятся в скомпилированном виде, а значит, СУБД не тратит время на компиляцию запроса при каждом его исполнении. Приложению не требуется тратить время на генерацию запроса. http://www.opennet.ru/base/dev/db_sql.txt.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 15:31:37 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяпоискал для самообразованияЭто все общетеоретические слова, которые применительно к конкретной СУБД и конкретным условиям могут иметь смысл вплоть до противоположного относительно реальности. Лучше найдите это в официальной документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 15:37:48 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
у авторов я не нашел, где это можно найти, остается верить людям. хоть это и не в тему топика , но вопрос интересный и если у кого есть что-то интересное - поделитесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 15:58:45 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
вадяу авторов я не нашел, где это можно найти, остается верить людям. хоть это и не в тему топика , но вопрос интересный и если у кого есть что-то интересное - поделитесь. подсказать где взять исходники? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 16:08:20 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
посмотрел исходники. Вижу, что в mysql 5.1 не было даже кеша хранимых процедур. Но в mysql 5.5 какой-то кеш в файле sp_cache.cc появился. Однако, страничка http://dev.mysql.com/doc/internals/en/sp-cache.html описывает, что этот кеш не разделяет данные между потоками. The PROCEDURE cache is maintained on a per thread basis , in THD::sp_proc_cache. Ну и вот статейка описывает эту гипотезу тоже http://www.joinfu.com/2010/05/mysql-stored-procedures-aint-all-that/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 16:40:53 |
|
||
|
хочу красивое решение
|
|||
|---|---|---|---|
|
#18+
предлагаю продолжить тут 14579207 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2013, 17:23:19 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38333479&tid=1836441]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 354ms |

| 0 / 0 |
