Оптимизация с выбранымми
Re: Оптимизация с выбранымми
Как вариант альтернативный тип поля, типа MySQL Запрос можно бес выбиралок зрительных, просто самому туда написать запрос к БД что и как но чтобы его не трогало при обновлении, или галочку в текущее поле - считать в связи или нет.
Может с этой стороны можно подойти как то например завести тип поля объявить его числовым чтоб в формулах работал, и в БД что отключить его от проверки или к чему оно там привязано, так глубоко не знаю.
Тогда да можно проблемные места переписать на свои запросы, хорошо бы с поддержкой пхп а не только MySQL но можно обойтись и им думаю.
Сергей что скажите так может проще можно что то сделать?
Может с этой стороны можно подойти как то например завести тип поля объявить его числовым чтоб в формулах работал, и в БД что отключить его от проверки или к чему оно там привязано, так глубоко не знаю.
Тогда да можно проблемные места переписать на свои запросы, хорошо бы с поддержкой пхп а не только MySQL но можно обойтись и им думаю.
Сергей что скажите так может проще можно что то сделать?
-
- Сообщения: 2425
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Оптимизация с выбранымми
если вы хотите писать собственные sql запросы и сохранять их в базе, а поле SqL запрос вам не подходит, используйте поле php
ps а насчет инструмента формула (из дополнения) лучше забыть и писать свои собственные запросы.
pps судя по теме у вас реально там что то так криво написано, что при больших обьемах происходят тормоза!! смотрите свои все вычисляемые поля и пробуйте их оптимизировать!
ps а насчет инструмента формула (из дополнения) лучше забыть и писать свои собственные запросы.
pps судя по теме у вас реально там что то так криво написано, что при больших обьемах происходят тормоза!! смотрите свои все вычисляемые поля и пробуйте их оптимизировать!
Re: Оптимизация с выбранымми
Спасибо попробую переписать там не криво, достаточно простые решение на 5 - 6 IF максимум плюс округления. Вопрос скорее что выборка с разных таблиц и там тоже свои моменты моменты.
Считал что встроенные формулы шустрее будут чем обычные. Попробую от них отказаться и посмотрю на результат. Ели их удалить то сразу все шустро их достаточно раз в сутки кроном обновлять что и происходит, а вот при каждом изменении сущности можно игнорировать так как они статичны.
Жду ответа Сергея может все таки есть вид поля который не будет дергать при каждом обновлении сущности. Ну или добавить такую возможность для автоматического действия ( обновлять только выбранные поля) Или руками БД их помечать... Вариантов много вопрос как правильней чтоб по минимум упираться в обновления или совсем не конфликтовать с ними.
Считал что встроенные формулы шустрее будут чем обычные. Попробую от них отказаться и посмотрю на результат. Ели их удалить то сразу все шустро их достаточно раз в сутки кроном обновлять что и происходит, а вот при каждом изменении сущности можно игнорировать так как они статичны.
Жду ответа Сергея может все таки есть вид поля который не будет дергать при каждом обновлении сущности. Ну или добавить такую возможность для автоматического действия ( обновлять только выбранные поля) Или руками БД их помечать... Вариантов много вопрос как правильней чтоб по минимум упираться в обновления или совсем не конфликтовать с ними.
-
- Сообщения: 2425
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Оптимизация с выбранымми
поле php)
несколько if? пример покажите? не могу найти тему но тут недавно кто то спрашивал как упростить конструкцию sql запроса в котором просто куча запросов была с if, надеюсь не ваша так как там 100% было не оптимизировано и бездумно написано!
несколько if? пример покажите? не могу найти тему но тут недавно кто то спрашивал как упростить конструкцию sql запроса в котором просто куча запросов была с if, надеюсь не ваша так как там 100% было не оптимизировано и бездумно написано!
Re: Оптимизация с выбранымми
Нет давно не писал. Вот простой пример с таблицы 2 ( Пример 10 тысяч записей)
ROUND(if([1]>0,[1],if([2]>0,[2],if([3]>0,[3],[4]*{5}))),2)
1 - Акционная цена если заполнена считаем по ней ели нет смотрим дальше ( числовое поле)
2 - Ручная цена - Красивая например 999.99 если надо указать ( числовое поле )
3 - Цена рассчитываемая отдельно по от закупки, которая рассчитывается от курса юаня и уе и закупки поставщика и доп затрат ( Доп затраты там простая формула но тоже с переменной курсов) ( Доп таблицы Курсы валют к друг другу и приходы, поступления разбитые на поставщиков) - Основная цена
4 - Ручная закупочная ( предполагаемая) Числовое поле - Запасная цена если ошибка основной обычно чуть выше. Предполагаемая цена
5 - Множитель с таблицы 2 - Числовое поле умноженное на процент ( пример 20 - заполняет клиент, делим на 100 по формуле и получаем в значение 0,2) - Таблица 2 имеет в среднем 300 - 600 значений.
Вот этот расчет нужно делать только при обновлении в таблице 3 - поступления или таблице 4 курсы валют. В остальных случаях число статично. А оно мне его дергает каждый раз при обновлении полей количество ( числовое) и Тип ( логическое)
Ну и таких у меня более 10... Некоторые длиннее но там много описывать)
Построено через в поле - MySQL Формула, по вашей рекомендации понял что есть смысл переделать в поле PHP и развернуть запросы руками а не через переменные в [1] и {5} к примеру верно?
ROUND(if([1]>0,[1],if([2]>0,[2],if([3]>0,[3],[4]*{5}))),2)
1 - Акционная цена если заполнена считаем по ней ели нет смотрим дальше ( числовое поле)
2 - Ручная цена - Красивая например 999.99 если надо указать ( числовое поле )
3 - Цена рассчитываемая отдельно по от закупки, которая рассчитывается от курса юаня и уе и закупки поставщика и доп затрат ( Доп затраты там простая формула но тоже с переменной курсов) ( Доп таблицы Курсы валют к друг другу и приходы, поступления разбитые на поставщиков) - Основная цена
4 - Ручная закупочная ( предполагаемая) Числовое поле - Запасная цена если ошибка основной обычно чуть выше. Предполагаемая цена
5 - Множитель с таблицы 2 - Числовое поле умноженное на процент ( пример 20 - заполняет клиент, делим на 100 по формуле и получаем в значение 0,2) - Таблица 2 имеет в среднем 300 - 600 значений.
Вот этот расчет нужно делать только при обновлении в таблице 3 - поступления или таблице 4 курсы валют. В остальных случаях число статично. А оно мне его дергает каждый раз при обновлении полей количество ( числовое) и Тип ( логическое)
Ну и таких у меня более 10... Некоторые длиннее но там много описывать)
Построено через в поле - MySQL Формула, по вашей рекомендации понял что есть смысл переделать в поле PHP и развернуть запросы руками а не через переменные в [1] и {5} к примеру верно?
-
- Сообщения: 2425
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Оптимизация с выбранымми
такой внутренний перебор с if не оптимален
лучше тогда уж case использовать
[] это же значение поля, так что оно и в африке буде значением поля
а вот {} это формула, если она в такой конструкции if используется, то оставить можно и не заморачиваться с переписанием!
в общем пробуйте экспериментируйте) но рекомендую 3.2.1 логипование использовать для проверки! это прямо маст хев в таких случаях
лучше тогда уж case использовать
[] это же значение поля, так что оно и в африке буде значением поля
а вот {} это формула, если она в такой конструкции if используется, то оставить можно и не заморачиваться с переписанием!
в общем пробуйте экспериментируйте) но рекомендую 3.2.1 логипование использовать для проверки! это прямо маст хев в таких случаях
Re: Оптимизация с выбранымми
case у меня тогда вызывал красные криты при пере сохранении, уже и не скажу точно. По экспериментирую может что не так писал...
Радует что прав был что нечего смертельного. Но вот именно на таких обращениях многих к многим в 2 и более связных сущностях все и виснет.
По поводу 3.21 Уже развернул тестовую вношу свои костыли и буду пробовать может еще что покажет... Но суть вопроса та же через PHP поле я так понял также само при любом действии вызывает перерасчет.
Оптимальным решением клон поля MySQL Формула без авто перерасчета или галочка в настройки, или галочка ( функция) В автоматизации считать все, или только выбранные.
Радует что прав был что нечего смертельного. Но вот именно на таких обращениях многих к многим в 2 и более связных сущностях все и виснет.
По поводу 3.21 Уже развернул тестовую вношу свои костыли и буду пробовать может еще что покажет... Но суть вопроса та же через PHP поле я так понял также само при любом действии вызывает перерасчет.
Оптимальным решением клон поля MySQL Формула без авто перерасчета или галочка в настройки, или галочка ( функция) В автоматизации считать все, или только выбранные.
-
- Сообщения: 2425
- Зарегистрирован: 14 окт 2020, 09:13
- Имя: Ruslan
- Откуда: Moscow
- Контактная информация:
Re: Оптимизация с выбранымми
нет, поле php имеет два режима либо динамический либо статический, задается в настройках поля
насчет sql формула и sql запрос даже создавал тему в их различиях и они существенны!
viewtopic.php?p=16866#p16866
тоже думал сделать доработку галочку записи в sql формуле, но в итоге передумал viewtopic.php?p=19786#p19786
насчет sql формула и sql запрос даже создавал тему в их различиях и они существенны!
viewtopic.php?p=16866#p16866
тоже думал сделать доработку галочку записи в sql формуле, но в итоге передумал viewtopic.php?p=19786#p19786
Re: Оптимизация с выбранымми
Спасибо за совет по 3.21 Вычислил и начал исправлять вот такую проблему
1. Пик торможения это MySQL Формула использующая статичные данные из MySQL запроса ( судя по всему при обновлении пускает в перерасчет) который ссылается на другую таблицу где тоже MySQL Формула, но так как ее нельзя использовать сохранял данные через статический текст.
2. MySQL Формула почему то работает дольше чем PHP динамический
НА простом примере
$output_value = [1]+[2];
Где 1 и 2 это значения с MySQL запросов пример выше.
Работает как поле MySQL Формула что для данных сущностей что для данных родителей + возможность дописыватьс вои запросы тут же без лишних полей в бд уменьшает общую длину запроса.
Такой подход в принципе и есть Формула с записью в базу или нет по галочке и позволяет использовать значение в расчетах...
Также попробую чать MySQL запросов перевести на поле ПХП, чт ото мне кажется что там меньше проверок фоновых все таки.
1. Пик торможения это MySQL Формула использующая статичные данные из MySQL запроса ( судя по всему при обновлении пускает в перерасчет) который ссылается на другую таблицу где тоже MySQL Формула, но так как ее нельзя использовать сохранял данные через статический текст.
2. MySQL Формула почему то работает дольше чем PHP динамический
НА простом примере
$output_value = [1]+[2];
Где 1 и 2 это значения с MySQL запросов пример выше.
Работает как поле MySQL Формула что для данных сущностей что для данных родителей + возможность дописыватьс вои запросы тут же без лишних полей в бд уменьшает общую длину запроса.
Такой подход в принципе и есть Формула с записью в базу или нет по галочке и позволяет использовать значение в расчетах...
Также попробую чать MySQL запросов перевести на поле ПХП, чт ото мне кажется что там меньше проверок фоновых все таки.