Оптимизация SQL-запросов

2 года 2 мес. назад #7441 от nix
Здравствуйте еще раз. Wedal, вы что-то говорили об SQL-запросах в моей предыдущей теме, и потому, к вам будет один серьезный вопрос. Вот есть тип контента, в котором располагается достаточно много полей. Некоторые из этих полей - Core42 со своим PHP-кодом, считывающим данные из базы по заданным запросам. Проблема в том, что среди этих полей есть многие, считывающие одни и те же данные из базы, следствием чего является большое количество повторных SQL-запросов. Еще одна проблема - в том, что поля с повторяющимися запросами располагаются не друг за другом, но между ними есть и другие поля.

В результате, поразмыслив, я решил объединить все эти поля в одно поле Core42, выведя в нем весь необходимый мне PHP-код, то есть, можно сказать, полностью самостоятельно генерирую разметку страницы этого типа контента. Дело в том, что между этими полями Core42 еще находятся и обычные поля - Text, Textarea и другие, а потому, пришлось слить в общее поле и их.

Это не беда, PHP я знаю, и разбираться в таком коде для меня намного проще, чем в огромном количестве полей, притом, что и длина его незначительна - 150-200 строк. Беда в другом: я не знаю, как Seblod работает с базой данных. Допустим, есть у меня на форме 10 полей типа Text (только они и все), считывающие данные из одной и той же таблицы, например, из столбцов 'param1', 'param2', ... , 'param10', стандартным способом считывания Seblod. Теперь я объединяю эти поля в одно поле Core42 и считываю все данные одним SQL-запросом:
SELECT param1, param2, ... , param10 FROM ...

Будет ли это быстрее? Медленнее? Не отличится по скорости от стандартного считывания?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

2 года 2 мес. назад #7442 от Wedal
nix, все как-то сумбурно. Если это не секрет, опишите задачу которую вы решаете, не абстрактно, а конкретно. Какова цель этого кода?

И вообще, зачем вы формируете код в Core-42? Может быть проще сделать собственные макеты для разных страниц? Seblod поддерживает практически все возможные способы переопределения макетов, полей, любых данных.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

2 года 2 мес. назад - 2 года 2 мес. назад #7447 от nix
Wedal, не умею переопределять макеты, с этим все очень туманно в голове. Core42 использую как единственную возможность обратиться к PHP. Есть ли серьезные причины использовать переопределения (например, Core42 работает медленнее с большим количеством кода)?

Пример привести сложно, такая проблема встречается вообще во всех типах контента на сайте. Но, допустим, пример такой. Некоторое время назад столкнулся с чем-то вроде бага Seblod, описал проблему здесь . Вкратце, если добавить в тип контента поле Core42, считывающее в Storage значение id, то тип контента перестает сохраняться. К слову, и иные проблемы есть, связанные с id в Storage.

Временное решение проблемы описал там же: в Storage пишу 'alias', а потом по этому значению вручную считываю id. И такое действие выполняется сразу в нескольких полях. Чтобы не было лишних запросов к базе данных, я хочу объидинить эти поля в одно и один раз считать из базы значение 'id'. Но между ними в типе контента (или типе поиска) находятся и другие стандартные поля (например, art_title). Поэтому, для того, чтобы объединить эти поля в одно, мне нужно объединить с ними и стандартные.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

2 года 2 мес. назад #7448 от Wedal
nix, если я правильно понял, то у вас есть некоторые данные, которые вы получаете из базы SQL-запросом, и которые нужно сохранить вместе с другими данными SEBLOD при отправке формы. Если этим задача ограничивается, и поле Core42 с запросами присутствует только в формах, но не в списках на сайте, но нет ничего страшного в нескольких лишних запросах, ведь форма добавления контента вызывается не так часто.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.


Вверх