Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
задача= удалить избыточное
------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Мало данных - ордер/фильтр на курсор, к примеру. Нужно ли значение переменных а и б где-то помимо этого кода (они же не local), нужно ли обращаться к курсору в вызываемой процедуре (соответствено нужно ли чтобы указатель записи стоял на следующей записи).
На первый взгляд логика тут простая - вызвать процедуру есть в таблице есть 2 непустых значения field1 (опять же, предполагая что в таблике нет полей с именами а и б, и что field1 это именно поле - что тоже абсолютно не очевидно из приведенного кода). Но не зная всего контекста что-то пытаться оптимизировать не особо получится - сломается другая логика. ------------------ WBR, Igor ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
напомнил:
- сколько будет дважды два? - а мы покупаем или продаем?
пысы. Игорь, предполагал, что ответят потомки, а не динозавры ![]() ------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
PaulWist Сообщений: 14762 Дата регистрации: 01.04.2004 |
А ну тогда
Skip 2 Do Myprog ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 1 раз(а). Последнее : PaulWist, 17.07.19 14:23 ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
все же с field1 задачка выглядела получше. допустим, что это поле таблицы, в которой нет полей с именами а и b
пысы. афигеть. вроде простая задача, а тз... ![]() Исправлено 4 раз(а). Последнее : Foxtrot, 19.07.19 07:22 ![]() |
Re: Оптимизируй это! | |
---|---|
pasha_usue Сообщений: 3722 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Ну, если сократить код, но просрать производительность на больших таблицах, то:
Исправлено 1 раз(а). Последнее : pasha_usue, 17.07.19 21:43 ![]() |
Re: Оптимизируй это! | |
---|---|
pasha_usue Сообщений: 3722 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Для таблиц побольше:
Исправлено 1 раз(а). Последнее : pasha_usue, 17.07.19 21:54 ![]() |
Re: Оптимизируй это! | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Без ответа на уточняющие вопросы можно будет предложить скрытое условие (или настройку) которая даст расхождение в результатах между начальным вариантом и очень многими из возможных предложенных. Или в том и суть - потыкать потом отвечающих в то что они то-то и это-то не учли ![]() Когда оптимизируют код, хотя бы в общих чертах представляют для чего он нужен, какую функцию выполняет - тогда оптимизация будет эффективной, иначе... Ну вот к примеру если этот код выполняется многократно (не единожды), и смысл его именно в проверке того что в таблице есть хотя бы 2 "непустых" записи, то мне кажется что оптимальнее всего будет
------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 17.07.19 22:48 ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
точнее 3 ------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
PaulWist Сообщений: 14762 Дата регистрации: 01.04.2004 |
Skip 2 установит указатель на 3-ей записи, а skip 3 на 4-ой, по условию задачи scan пропускает первые две записи и на 3-ей запускает Myprog. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
вооот! старею!
![]() но переписывать код на практике все же накладно обычно, предлагаю просто удалить лишнее ------------------ Мойте ноги, моя ноги вы моете и руки Исправлено 1 раз(а). Последнее : Foxtrot, 18.07.19 08:17 ![]() |
Re: Оптимизируй это! | |
---|---|
PaulWist Сообщений: 14762 Дата регистрации: 01.04.2004 |
Не расстраивайся, я сначала тоже написал skip 3 ![]() ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) ![]() |
Re: Оптимизируй это! | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
По условиям задачи (начальной, когда ещё не было a="a") скан дополнительно пропускает записи с пустым полем - скип без дополнительного фильтра по таблице, или фильтрующего индекса этого сделать не может (а С ними он не на ту запись станет в итоге). Кроме того, без фильтрующего индекса такие скипы могут быть весьма накладны - если к примеру в таблице под сотню Мб множество записей с пустым полем, а искомое "непустое" где-то очень далеко от начала.
------------------ WBR, Igor ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
все так, но ты имхо увлекся
![]() требуется лишь скопировать код и удалить лишнее ;) ------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
pasha_usue Сообщений: 3722 Откуда: Е-бург Дата регистрации: 06.10.2006 |
На данный момент не представлено кода, который полностью выходит на результат исходного. А в условии не оговорено, чем можно пожертвовать. ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
задачу составлял спонтанно, отсюда видимо столько вопросов
![]() предполагал, что предложат к примеру очевидный вариант удалить строку "GO TOP", так как конманда SCAN по-дефолту использует операнд ALL ну и дальше по тексту... есть там еще к чему стремиться ![]() а так "да", спонтанное оно и есть спонтанное. просто тенденция сейчас - все мигрируют в облака, а у нас - в курилку такие дела ------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
medstrах Сообщений: 1810 Дата регистрации: 10.06.2019 |
Ну тогда к чему это тред был, если сам в курсе? ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
то есть загадывая задачу, вопрошающий не должен знать ответа?
как тебя понимать, Саид? (с) ------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
Re: Оптимизируй это! | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
О том и речь - ты не предоставил всех исходных данных, и потому понять как там "правильно" нереально. "просто Skip 2" (к которому, кстати, нужно locate прописать ну или тот же go top, хотя он в общем случае медленнее работает) предполагает ну по минимуму что в таблице нет записей с пустым полем field1. В дополнение к уже озвученному допусловию что записей >2 А если ты ещё и "знаешь" что в таблице нет удалённых записей (или просто стоит set deleted off и они не отбрасываются), нет ни фильтров ни set order, и это не курсор с несохранёнными изменениями в 5-м режиме буферизации ![]() ------------------ WBR, Igor ![]() |
Re: Оптимизируй это! | |
---|---|
Foxtrot Автор Сообщений: 3422 Откуда: Куда: Дата регистрации: 25.04.2003 |
кстати с количеством я малость погорячился. количество записей никак не должно влиять на код
------------------ Мойте ноги, моя ноги вы моете и руки ![]() |
© 2000-2025 Fox Club  |