Реализуя код из этого вопроса в своем проекте, я понял, что есть 3 способа добиться чего-то, но я понятия не имею, какой из них лучше.Есть ли снова исполнение с использованием одного над другим?Стоит ли эта производительность более сложной реализации?Это то, что я хочу знать.
Хотя я не уточнил, этот вопрос касался выбора информации о фильме из таблицы и объединения каждого жанра в один столбец, разделенный запятыми.Теперь мне нужно, чтобы эти жанры были кликабельны в моем коде, чтобы я мог фильтровать по жанру, по которому щелкнули.
Я думал о трех способах сделать это:
Решение 1)
Используйте 1 запрос SELECT и функцию по этому другому вопросу, кроме использования PHP для построения строки HTML.Примерно так:
$genres = explode(',', $info['GENRES']);
$count = count($genres);
for($i = 0; $i < $count; $i++) {
$genres[$i] = '<a href="#">'.$genres[$i].'</a>';
}
$info['GENRES'] = implode(' | ', $genres);
Затем я понял, что мне не хватает идентификатора жанра, поэтому я могу легко создать ссылку для фильтрации по этому жанру, и я подумал об изменении функции Oracle, чтобы включить ее.Как?Создавая строку JSON (т. Е. {"1":"Action","2":"Crime","5":"Thriller"}
, функция может быть легко изменена для этого), можно легко адаптировать приведенный выше код соответствующим образом.
Решение 2)
Используйте 2 оператора SELECT и полностью игнорируйте функцию по этому другому вопросу.Один запрос для выбора информации о фильме, другой для выбора всех жанров (идентификатор и имя), связанных с этим фильмом.Тогда PHP сделает все остальное для построения строки кода HTML.
Решение 3)
Просто используйте 1 запрос SELECT и функцию Oracle, адаптированную для построения всей строки путемсам.Это значит, что PHP-код будет таким же простым, как выполнение оператора SQL.Функция Oracle подготовила бы всю строку HTML.
Теперь это решение может не работать, так как оно мне действительно нужно, что делает его неуместным.Но я не знаю, потому что я не уверен, как именно я собираюсь создавать эти HTML-ссылки для фильтрации по жанру, пока не думал об этом.Ну, в PHP я всегда могу сделать это, так или иначе, не уверенный, что могу сделать то же самое в функции Oracle.
Тем не менее, давайте предположим, что это возможно, я верю, что это так.
Какое решение мне выбрать?
Есть ли в этой ситуации какая-либо причина, чтобы функция Oracle выполняла всю работу (или наоборот)?Учитывая это, я должен пойти с решением 3 или решением 1/2?
Если решение 1/2 - лучший путь, какой путь я должен пойти?Решение 1 имеет 1 SELECT в коде PHP, но другой в функции Oracle.Решение 2 имеет 2 SELECT в коде PHP.Есть ли прирост производительности одного над другим или они в основном одинаковы?Если да, какой из них лучше?
Решение 1 имеет более простой код PHP, но вводит немного более сложный код для функции Oracle.С другой стороны, решение 2 вообще не имеет кода функции Oracle, и код PHP будет увеличиваться в размере / сложности, хотя и ненамного.
Я склонен к решению 1, но хотел бы услышать вашемысли.