Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Встретился какой-то чрезвычайно сложный запрос к таблице, понять который я никак не могу.
 
Таблица имеет вот такую структуру
https://ibb.co/6Wz6HPN
 
А непонятный код вот такой:
    $query = mysqli_query($db, "SELECT t1.*, t2.name, t2.middlename, t2.surname FROM `comment` AS t1 LEFT JOIN `users` AS t2 ON t2.id = t1.user_id WHERE t1.theme_id = '".$theme_id."' ORDER BY t1.time_add ASC");
 
    if ($count = mysqli_num_rows($query))
    {
      while ($row = mysqli_fetch_assoc($query))
      {
        $row['childs'] = array();
        $comments[$row['id']] = $row;
      }
    }
 
Что за данные здесь извлекаются (t1.*, t2.name, t2.middlename, t2.surname) и откуда они берутся - в таблице-то таких полей нет!  
И зачем они - ведь код обработки запроса их даже не упоминает.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 14:58 16-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
И зачем они - ведь код обработки запроса их даже не упоминает.

читать основы SQL - выборка из нескольких таблиц одновременно
https://oracleplsql.ru/joins-mysql.html

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 19:16 16-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Все ж таки, это довольно сложный запрос и его на уровне справочника не решить. Я бы хотел разделить его на два последовательных запроса.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 21:00 16-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Я бы хотел разделить его на два последовательных запроса.

не нужно этого делать и нет там ничего сложного, все просто и элементарно.
 
идет выборка из comment, всего, где theme_id = заданному значению, попутно к каждой строке присоединяется информация из таблицы с пользователями users.. точнее его имя, отчество и фамилию, по полю comment.user_id = users.id
 
select все_из_comment, users.name, users.middlename, users.surname ...

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 21:06 16-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если в таблицу comment добавить нужные столбцы из таблицы users, выборка быстрее будет, чем из двух таблиц?

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 21:14 16-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Если в таблицу comment добавить нужные столбцы из таблицы users

не нужно дублировать информацию. неудобно будет править потом.
у вас миллионы записей? если нет, не будет. и не забываем про индексы.

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 21:31 16-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
Есть два вопроса по использованию базы данных.  
 
1. На индексной странице имеется подключение к базе данных. И на ней же через аякс вызывается другой РНР файл, который тоже использует базу данных.
 
Правильно ли я понимаю, что в обоих файлах после последнего обращения к базе или в конце кода следует использовать отсоединение от базы?
 
 mysqli_close($link);  
 
2. Имеются запросы типа
    $query = mysqli_query($db, "SELECT `user_id` FROM `comment` WHERE `id` = $ident");
    $row = mysqli_fetch_assoc($query);
    $user_id_autor = $row['user_id'];
 
Есть ли смысл после каждого из них писать
mysqli_free_result($query);  
unset($row);

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 19:23 18-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Правильно ли я понимаю, что в обоих файлах после последнего обращения к базе или в конце кода следует использовать отсоединение от базы?

необязательно.  
https://www.php.net/manual/ru/mysqli.close.php

Цитата:
Открытые непостоянные соединения MySQL и наборы результатов автоматически закрываются при уничтожении их объектов. Явное закрытие открытых соединений и освобождение наборов результатов не обязательно. Однако рекомендуется закрыть соединение, как только скрипт завершит выполнение всех своих операций с базой данных, если ему ещё предстоит большая обработка после получения результатов.

 

Цитата:
Есть ли смысл после каждого из них писать
mysqli_free_result($query);  
unset($row);

только если у вас там просто огромейшая выборка и памяти действительно не хватает.

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 21:15 18-07-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Преждевременная оптимизация — корень всех зол
 
Нет сомнений в том, что грааль эффективности ведет к злоупотреблениям. Программисты тратят огромное количество времени на размышления или беспокойство о скорости некритичных частей своих программ, и эти попытки повышения эффективности на самом деле имеют огромное негативное влияние, когда рассматриваются вопросы отладки кода и его поддержка. Мы должны забыть о небольшой эффективности, скажем, примерно в 97% случаев: преждевременная оптимизация — это корень всех зол.
 
Добавлено:
PHP создан, чтобы умирать

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 00:11 19-07-2022 | Исправлено: Samovarov, 00:14 19-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Лично я сторонник того, чтобы всё делать правильно, всё делать оптимально - и критичные операции, и все прочие. Если это входит в привычку, то и не занимает слишком много времени.
 
Кстати, это касается не только программ, а вообще жизни.
 
Программист сделал мне сайт на фреймворке очень, очень быстро. Буквально за несколько дней. Вот только PageSpeed Insights оценивал его производительность в 19 баллов, Speed Index 7.4 сек, Time to Interactive 14.0 сек.
 
Провести оптимизацию мне стоило в три раза дороже, чем само создание. При этом я копаюсь в коде каждой написанной фрилансером строки и заставляю делать как следует. Зато теперь у меня страница открывается за 0.3 секунды и PageSpeed Insights дает 100 баллов.
 
Но полной оптимизации мне всё равно добиться не удалось, хотя над этим поочередно работали 2 человека. Люди реально не понимают, чего я от них хочу, ибо они никогда не обращали на это внимание. Ведь работает же - что Вам ещё надо? Пришлось с чем-то смириться, иначе до Нового года будут копаться... Потому, что улучшая одно, они портят что-то другое, и на проверку у меня уходит времени в сто раз больше, чем на их корректировки.
 
А корень проблемы в том, что надо было с самого начала делать как следует, не тяп-ляп, и без всяких фреймворков, и не лишь бы быстрее. Но я сам виноват - я не ставил такой задачи, да и опыта в качестве заказчика было мало.  

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 01:06 19-07-2022 | Исправлено: Vladsvn, 01:07 19-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
PHP создан, чтобы умирать


Цитата:
12 мая 2013 в 09:33

ну да, и не развивается далее, с 8 версией и кучей новых фишек.
 
Vladsvn

Цитата:
Если это входит в привычку, то и не занимает слишком много времени

если разница в несколько мс, которая, тем более, зависит от различных факторов, то вы потратите больше времени отыскивая ее и оптимизируя, чем будет от этого толку. оптимизировать нужно действительно сложные ситуации, когда выигрыш будет заметен.
 

Цитата:
Программист сделал мне сайт на фреймворке очень, очень быстро. Буквально за несколько дней. Вот только PageSpeed Insights оценивал его производительность в 19 баллов, Speed Index 7.4 сек, Time to Interactive 14.0 сек.

он не оценивает работу самого скрипта. и только если в нем делается что то действительно сложное, тогда это означает, что оно не оптимизировано. уж сам framework, поверьте, на это не особо влияет, иначе аналогичное было у всех, кто им пользуется. влияют именно те действия, которые выполняются написанным на заказ кодом.
 
в случае работы с mysql - проблема, чаще всего, в неоптимизированных запросах, отсутствиях индексов. и это решается.

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 01:50 19-07-2022 | Исправлено: Mavrikii, 01:53 19-07-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
 Вот только PageSpeed Insights оценивал его производительность в 19 баллов, Speed Index 7.4 сек, Time to Interactive 14.0 сек.

Это понятно, если у тебя js скрипты на беке генерируется, прям в html странице. Ты теряешь преимущества кеширования на фронте, как минимум. А этого в 90% случаев зависит скорость веб-приложения. Но это фигня, на самом деле.
 
Главное, что ты, теперь, не сможешь отдать на доработку свой код, то му же фрилансеру, если бизнес поставит новые задачи. И вместо того чтобы делать деньги ты будешь копаться в собственном коде или платить в десять раз больше за новые фитчи или правки
 
Простите за офтоп.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 09:59 19-07-2022 | Исправлено: Samovarov, 10:02 19-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
теперь, не сможешь отдать на доработку свой код, то му же фрилансеру
С доработкой ЛЮБОГО кода вообще плохо дело.
 
Мой первый фрилансер-разработчик заказов больше не берет - устроился на постоянку. А другие не могут разобраться в его коде! 4 человека брались за работу и бросали - не понимают логики. Описания нет, комментариев ни строчки ни в одном файле. РНР файл размером больше 200Кб и никаких пояснений! CSS размером 400 кБ на 22000 строк... Про JS вообще молчу.
Вот такой сейчас стиль работы - "интуитивно понятно".
 
Две недели я подбирал человека. Он взялся внести корректировки за 10 дней, но через 3 дня, сделав самый примитив, который я и сам бы смог, слился.
 
Третий фрилансер обещал все сделать по ТЗ за три дня, сделал за 32 дня, да и то не все.  
 
Я совершенно не считаю себя специалистом. Если чего и умел, то за 10 лет бездействия уже позабыл. Но моё впечатление, что Framework нужны только самим программистам - упрощают работу и оберегают от некоторых ошибок. А владельцу сайта это совершенно не нужно - понижается быстродействие и увеличивается ресурсоемкость. Поэтому в серьезный сайтах типа Дзен или ВиСи никаких Framework  Вы не встретите.
 
 
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 10:38 19-07-2022
Samovarov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Поэтому в серьезный сайтах типа Дзен или ВиСи никаких Framework  Вы не встретите

Ты ошибаешься. Все современные компании используют целый зоопарк фреймворков либо поддерживают свои собственные, но все равно, используют готовые библиотеки.

Всего записей: 357 | Зарегистр. 20-03-2002 | Отправлено: 12:34 19-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
 в серьезный сайтах типа Дзен или ВиСи никаких Framework  Вы не встретите

потому, что серьезные сайты могут позволить себе заказать фреймворк на заказ. они дают гибкость и возможность расширения. как раз у крупных сетевых компаний, с кучей сайтов, есть костяк из своего фреймворка, не с нуля же писать основы для каждого сервиса.
 

Цитата:
РНР файл размером больше 200Кб и никаких пояснений! CSS размером 400 кБ на 22000 строк..

своего кода или, все же, фреймворка и добавок? кстати, фреймворки, для оптимизации, зачастую весь код в один файл и с брасывают.

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 23:48 19-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
серьезные сайты могут позволить себе заказать фреймворк на заказ
у крупных сетевых компаний, с кучей сайтов, есть костяк из своего фреймворка, не с нуля же писать основы для каждого сервиса.

Совершенно с Вами согласен! И я такого же мнения. Это как для крупного производителя выпустить свою микросхему, а  не паять кучу транзисторов.
 

Цитата:
своего кода или, все же, фреймворка и добавок? кстати, фреймворки, для оптимизации, зачастую весь код в один файл и с брасывают.
Не пойму пока, но судя по тому, что в коде полно переменных, которые я не использую, все же фреймворк.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 09:14 20-07-2022 | Исправлено: Vladsvn, 09:22 20-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Не пойму пока, но судя по тому, что в коде полно переменных, которые я не использую, все же фреймворк.

это не определяется количеством переменных.

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 09:53 20-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это не определяется количеством переменных.
Я имел в виду их имена. Когда что-то вычисляется, составляется, комбинируется, а итоговая величина у меня нигде не используется.  
 
Предполагаю разобраться с этим чуть позже. Читается очень тяжело - не структурировано, строки длиннее экрана и сплошь функции, вписанные в функции.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 10:32 20-07-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
. Читается очень тяжело - не структурировано, строки длиннее экрана и сплошь функции, вписанные в функции

кусок просто выложите куда то..

Всего записей: 15089 | Зарегистр. 20-09-2014 | Отправлено: 10:41 20-07-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
кусок просто выложите куда то..

Вот такой пример
Подробнее...
Для начала надо попробовать его просто выбросить...

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 10:54 20-07-2022 | Исправлено: Vladsvn, 10:56 20-07-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru