Формировать ли запрос в MySQL поблочно или делать простыню?

255
26 ноября 2016, 20:20

Воюю с простыней, запросы в коде PHP 120-140 строк по 80-100 символов, т.е. по 14000 символов.
Запрос в БД (укороченный):

SELECT crd1.n AS r1, crd2.n AS r2, crd3.n AS r3, crd4.n AS r4  
FROM crd crd1, crd crd2, crd crd3, crd crd4  
WHERE crd2.n - crd1.n = ${size} AND crd4.n - crd3.n = ${size}  

Это примерно 1/100 от всего запроса, т.е. по сути запрос в коде идет как простыня плюс еще несколько таких же запросов. Читаемость ужасная, время выполнения отличное))))
Придумал временное решение (только ради повышения читаемости) - если разбить запрос на одинаковые блоки (они там есть почти 60% одинаковых) и перед отправкой в базу просто соединять нужные, например (на самом деле блоки конечно гораздо длиннее, такие как в примере я и не думал бы разбивать)

$sql1="SELECT crd1.n AS r1, crd2.n AS r2, crd3.n AS r3, crd4.n AS r4 ",  
$sql2="FROM crd crd1, crd crd2, crd crd3, crd crd4 ",  
$sql3="WHERE condition " 

и отсылаемый в базу

$sql=$sql1.$sql2.$sql3  

Вопрос 1: сильно ли это увеличит время формирования перед отправкой в БД или все на грани погрешности?
Вопрос 2: заниматься ли оптимизацией типа выкинуть все операторы AS, порезать названия таблиц, алиасов и тд. или это грани погрешности?
Спасибо за внимание, господа!

Answer 1

Значительного изменения времени выполнения скрипта от обоих вопросов Вы не заметите.

Подумайте еще о классе Query, который будет содержать массив полей, список таблиц и набор условий и формировать SQL запрос автоматически.

А еще запросы можно вынести в отдельный константный модуль

READ ALSO
Реализация insert ignore в Sqlalchemy orm

Реализация insert ignore в Sqlalchemy orm

Пытаюсь разобраться в sqlalchemy, подскажите, пожалуйста, как реализовать insert ignore при использовании sqlalchemy ormИмеем три таблицы вида:

329
Подключение к базе данных mysql

Подключение к базе данных mysql

Доброго времени сутокСкажите, а можно ли этот метод, который подключается к БД с изменениями внести в ActionListener для кнопки

248
Непонятный запрос Yii2

Непонятный запрос Yii2

У меня постоянно показывает такой запрос

250
COUNT и total c двух колонок

COUNT и total c двух колонок

Задача - необходимо подсчитывать и выводить COUNT с двух колонок, в которых находятся числа от 1 до 30Имеем следующий код

246