|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Извиняюсь за то, что на "ты", но ко мне можно обращаться так же. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:31 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. Насчет небольшой длины, несколько символов, что используются для макроподстановки ситуацию коренным образом не меняют, text...endtext - решает данную проблему полностью. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:35 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Местами администраторВ данном случае при небольшой длине строки запроса отлично работает и с макроподстановкой, так что грабли в данной ситуацие не "эти" Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?Не понял. 1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки. 2. Макроподстановка не может быть более 254 символов и тормоз. 3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем. Где противоречие? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:37 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Сам себе противоречишь - грабли таки эти, и без макроподстановки работает еще лучше - так с макроподстановкой все-таки работает, хуже, но все-таки (-+0...1 с), согласен?[/quot]Не понял. 1. SQLPREPARE() для одиночного батча - тормоз. И лишние строки. 2. Макроподстановка не может быть более 254 символов и тормоз. 3. С помощью Coverage profiler считаем реальное количество вызовов с этими тормозами и тихо офигеваем. Где противоречие?[/quot] 2. так ведь и без макроподстановки не получалось 1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три через лет пять пожалуй и набралось бы секунд 20-30 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 16:49 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администратор2. так ведь и без макроподстановки не получалосьКак у тебя с булевой алгеброй и математической логикой? .t. or .t. какой даст результат? Изменится ли результат если перевести в .f. только один операнд? Что надо сделать, чтобы таки результат стал .f. ? 1,3 SQLPREPARE() использую действительно один раз, но дело в том, что данные взял с сервера, отключился и программа работает автономно, следующее обновление данных дня через два, три через лет пять пожалуй и набралось бы секунд 20-30Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону, превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу по хорошему? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:00 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
> Автор: проходящий. > Ну это все сначала так аргументируют свой выбор. Потом начиают работать по шаблону. Потом количество применений > шаблона увеличивается. Потом прога начинает тормозить. Разбор полетов показывает, что объяснения, что мол такая > конструкция тормозит всего лишь на 0.00001 сек., не выдерживают никакой критики в силу того, что РЕАЛЬНОЕ количество > использования такого шаблона и, главное, количество реальных вызовов критикуемого кода, построенного по шаблону, > превышает все предполагаемые разрботчиком-шаблоником пределы на ПОРЯДКИ!!! Особено если это где-то внутри большой > сложной формы с кучей refresh'ей "для надежности". Зачем учится плохому? Зачем на это тратить время? Может лучше сразу > по хорошему? + сто тыщь пицот З.Ы. Так и хочется поотрывать все и приставить обратной стороной Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:17 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Игорь Горбонос З.Ы. Так и хочется поотрывать все и приставить обратной стороной Стесняюсь спросить где и что хочется поотрывать и приставить? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:24 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Так легко договориться и до того, что завтра конца света. Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() . проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. проходящий.И грабли таки эти Макроподстановка работает=.F. проходящий.без макроподстановки работает еще лучше Макроподстановка работает=.T. проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне) У кого проблемы с логикой и дискретной математикой? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:30 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
А мне ведь простительно, самоучка я, а вот ГУРУ логики не должны так опрометчиво высказываться или я не прав? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:35 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторТак легко договориться и до того, что завтра конца света. Но если в будущем соберусь писать полноценное клиент-серверное приложение, обязательно учту все пожелания, связанные с символьной строкой и макроподстановкой в случае применения SQLPREPARE() .Опять какое-то кривое понимание. Макроподстановка тормоз всегда, вне зависимости от SQLPREPARE() и прочего. В том числе и от клиент-серверности. проходящий.Вот именно "при небольшой". И грабли таки эти. И без макроподстановки работает еще лучше. Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода. И получавшего в выигрыше отнюдь не вымышленные 5 секунд, а в разы большую скорость и уменьшение времени на минуты, часы и даже сутки. Не надо забывать про законы больших чисел и про то, что большое состоит из тысячи мелочей. проходящий.И грабли таки эти Макроподстановка работает=.F. проходящий.без макроподстановки работает еще лучше Макроподстановка работает=.T. проходящий.Уж поверьте старперу, оптимизировавшему тонны показанного Вами кода Код измеряется в тоннах? Моего кода? (т.к. Вами с большой буквы, логично предположить, что обращение лично ко мне) У кого проблемы с логикой и дискретной математикой?М-да, похоже без конкретных кусков кода, где макроподстановка была "необходима", не обойтись. К тому же говрилось про два операнда, а не про один. Потому вопрос про логику и математику остается открытым. Про тонны кода, возможно я не совсем точно выразился. Имелись в виду тонны кода, пример или образец которого и был Вами продемонстрирован. Написаны сии тонны, конечно, не Вами, но все подобные коды разительно похожи друг на друга как по стилю, так и по быстродействию. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:45 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
Человеку свойственно ошибаться. проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Начиналось ведь с этого, опять накладочка. И ведь речи нет ни про быстродействие, ни про логику Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Это потом, дабы выкрутиться чужое решение было выдано за свое, а когда это не прокатило пришлось докапаться до быстродействия, да уж - В чужом глазу соринку видно, а в своем бревна не видать. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 17:54 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Код: plaintext 1.
Человеку свойственно ошибаться. проходящий.ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Начиналось ведь с этого, опять накладочка.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? И ведь речи нет ни про быстродействие, ни про логику Просто сказано, что данная конструкция не работает из-за макроподстановки, а конструкция работает. Работает в некоторых случаях. Вам предложено решение, работающее всегда. Потом было объяснено, что макроподстановка еще и торомоз. Что не так?Это потом, дабы выкрутиться чужое решение было выдано за свое,Тынц в студию. Какое чужое решение? Где? Ткните пальцем. а когда это не прокатило пришлось докапаться до быстродействия, да уж - В чужом глазу соринку видно, а в своем бревна не видать.Не прокатило что? ps: Вы не слишком близко к сердцу приняли мои рассказы про хороши и плохие подходы к прораммированию на фоксе? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 18:16 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий.Оппа... И где же тут предложенные не мной решения? Вот PaulWist Символьные поля, переменные памяти и константы проходящий.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? Поточнее – описание проблемы и вопрос звычал следующим образом: Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: nShandle=SQLCONNECT('Taxes',.T.) tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") IF nResult=1 SQLEXEC(nShandle) endif SQLDISCONNECT(nShandle) Все проходит отлично, однако когда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться: "Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный. Подскажите что за фигня, как побороть или обойти. Приходиться потом выбрасывать данные, которые не нужны... Ответ: проходящий. ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. проходящий.кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица SQLPREPARE() подготавливает SQL-оператор для удаленного выполнения функцией SQLEXEC(). Функция посылает источнику данных SQL-оператор, где он компилируется для более быстрого исполнения. О.В. Бартеньев (книга о Фоксе) Кому верить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:06 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторпроходящий.Оппа... И где же тут предложенные не мной решения? Вот PaulWist Символьные поля, переменные памяти и константы Опять жуть. Это не решение проблемы, а описание граблей, на которые Вы наступили. И грабли эти как раз в макроподстановке и лежат. РЕШЕНИЕ как раз таки предложил я. При чем такое, которое обходит еще кое-какие грабли. проходящий.Опять не понял. О какой накладочке речь. Не могли бы изъясняться поточнее? Поточнее – описание проблемы и вопрос звычал следующим образом: Местами администраторВыполняю запросы к SQL серверу через ODBC при помощи примерно такой конструкции: nShandle=SQLCONNECT('Taxes',.T.) tVdok='"'+'select * from fn98'+'"' nResult=SQLPREPARE(nShandle, &tVdok, "fn98") IF nResult=1 SQLEXEC(nShandle) endif SQLDISCONNECT(nShandle) Все проходит отлично, однако когда начинаю увеличивать длину запроса (указываю перечень полей для загрузки, использовать условия сортировки, группировки и т.д.) ~>240 символов, фокс (9) начинает ругаться: "Команда содержит нераспознанное ключевое слово или фразу", хотя сам запрос однозначно правильный. Подскажите что за фигня, как побороть или обойти. Приходиться потом выбрасывать данные, которые не нужны... Ответ: проходящий. ЗАЧЕМ тут эти танцы с бубном? ЗАЧЕМ здесь макроподстановка? Уберите ее и все наладится. Вот именно. Уберите макроподстановку, собирайте строку номальными способами и никакие танцы не понадобятся. проходящий.кстати, вызывать SQLPREPARE() для однокрано выполняемого батча - бессмыслица SQLPREPARE() подготавливает SQL-оператор для удаленного выполнения функцией SQLEXEC(). Функция посылает источнику данных SQL-оператор, где он компилируется для более быстрого исполнения. О.В. Бартеньев (книга о Фоксе) Кому верить?Обоим. Потому, что я не оспаривал, а уточнил область действия процитрованного утверждения. ДА, SQLPREPARE() используется для ускорения выполнения. Но только ускорение наступает при одном условии - многократном выполнении подготовленного таким образом батча. Ускорение получается за счет исключения времени подготовки при повторных вызовах. При однократном ускорения не происходит. Сочетание SQLPREPARE() и SQLEXEC() для ОДНОГО выполнения батча будет даже несколько медленнее одного SQLEXEC() с тем же батчем, так как одна компиляция выполняемого батча тут будет присутствовать в обоих случаях, выполняется всегда компилированный/подготовленны код. Но в первом случае есть еще расходы на вызов дополнительной функции и получение результата ее работы. Иное дело многократное исполнение. Тогда одни раз компилируется/подготавливается план исполнения и потом несколько раз исполняется этот самый подготовленный план. Еще вопросы есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:27 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Когда пойдете в политику? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:38 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторКогда пойдете в политику?Если вопрос ко мне, то он опять мимо кассы. :) В смысле Вы опять неправильно поняли/интерпретировали мои тут высказывания. Я не собираюсь в политику, мне интереснее решение технических вопросов, а не ... ну Вы меня поняли. А что вызвало такой вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 19:44 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Такое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:02 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторТакое ощущение, что специалисты по техническим вопросам могут выкрутиться из любой затруднительной ситуации. :)Иначе бы они не были специалистами, не так ли? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:09 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Угу, а решение проблемы все таки не Ваше. http://forum.foxclub.ru/read.php?32,177182,177250#msg-177250 Владимир Максимов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Как видите, все что находится между TEXT и ENDTEXT воспринимается не как набор команд, а просто как текст. Содержимое переменой m.lcText. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:28 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Местами администраторУгу, а решение проблемы все таки не Ваше. Для Вас "предложенное мной" и "мое" - одно и то же? Разумеется оно не мое лично, не я его придумал, но здесь то его предложил я? Или не я? Или не это, а что-то другое? Вам еще не надоело добиваться своей "победы"? Неужто так сильно хочется меня задавить? Или это вопрос какого-то "принципа"? Какого? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:41 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
проходящий., Опять таки решение предложил PaulWist. Не хотел Вас давить, просто Вы сами уперлись по не понятным причинам, а справедливость все-таки должна быть, хотя бы в таких очевидных вопросах. Как специалиста в VFP (просматриваю sql.ru регулярно, использую в том числе и Ваши рекомендации и решения) Вас очень уважаю. То что человек "упертый", а специалисты в своей области чаще всего именно такие - очевидно, высококласный специалист=талант (10%)+труд (90%), а что может заставить столько трудиться?- Считаю что именно оно. Не думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.02.2010, 20:57 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
авторНе думайте, что я совсем чайник, одно из моих творений будет скоро работать примерно в 200-400 госконторах извините, за флуд, но лучше-бы оно не работало. приходилось видеть подобный бред, работающий на 50тыс раб.местах в РФ, убились пользователи и с ума сошли сами разработчики. 200-400 говорит только об лобировании интересов и т.д., но ни коим образом об этом нельзя судить о качестве ПО, Ваши перлы в виде макроподстановки и упертость в отстаивании какого-то принципа это доказывают. как раз в гос.конторах и стоит бредятина, написанная в чеб..., это такой бред, который написан явно под травой. раз такой умный, какого че... здесь спрашиваешь? тряси сервер дальше,- он железный, все стерпит. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 09:18 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
прошелмимо... и упертость в отстаивании какого-то принципа это доказывают. От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :) С уважением, Алексей ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:26 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
Aleksey-Kпрошелмимо... и упертость в отстаивании какого-то принципа это доказывают. От вас слышать обвинение в адрес кого-либо в "упертости" даже странно :) С уважением, Алексей устроим вновь "срачь"? на тему курсорадаптера? или все-же будете рогами упираться? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:36 |
|
SQLPREPARE()
|
|||
---|---|---|---|
#18+
2 Aleksey-K понравилось последнее высказывание Михаила Дроздова: авторА вобще-то на настоящий момент "правильное" использование данных в VFP - это использовать VFP-класс CursorAdapter, который будет в роли "посредника" между т.с. "внешним источником" данных любой природа: т.е. получаемый через ADODB/ODBC/XML-файлы, ... и локальными буферизованными VFP-курсорами, поля которых "биндятся" к контролам на формах... ну-ка сбегай, надавай по попе, о великий и могучий стратег, поборись за чистоту рядов, ненавязывание КАДов и т.д. тьфу на тебя пять раз. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2010, 11:44 |
|
|
start [/forum/topic.php?fid=41&msg=36475733&tid=1585583]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 166ms |
0 / 0 |