Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Дублирование запроса?


Recommended Posts

Потихоньку разбираюсь с этой шикарной системой и возникают вопросы. Например. В контроллере catalog  category идут запросы к БД, сначала getTotalProducts, затем getProducts. Почему нельзя total вывести из последнего(например count($query) и не выполнять один и тот-же запрос дважды?

И получается если я меняю запрос , его надо менять в 2 функциях. Или функция getTotalProducts еще где то вызывается?

Змінено користувачем PeletonTver
Надіслати
Поділитися на інших сайтах


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

 

Считаю минимум нужно делать SQL_CALC_FOUND_ROWS, затем FOUND_ROWS() соответственно записывать в посл. элемент массива. Да и можно было, хотя бы, сделать параметром в функцию - верни мне только total.

Змінено користувачем ArtemFam
Надіслати
Поділитися на інших сайтах

7 часов назад, PeletonTver сказал:

Почему нельзя total вывести из последнего(например count($query) и не выполнять один и тот-же запрос дважды?

 

в - внимательность :)

 

4 часа назад, ArtemFam сказал:

Считаю минимум нужно делать SQL_CALC_FOUND_ROWS, затем FOUND_ROWS()

 

есть там засада с совместимостью, в зависимости от версии mysql

https://stackoverflow.com/questions/47407046/sql-calc-found-rows-with-found-rows-always-returns-1

Надіслати
Поділитися на інших сайтах

12 часов назад, AlexDW сказал:

 

в - внимательность :)

 

 

есть там засада с совместимостью, в зависимости от версии mysql

https://stackoverflow.com/questions/47407046/sql-calc-found-rows-with-found-rows-always-returns-1

Не только с совместимостью
На хабре была статья с тестами
Когда  идет составной запрос, то толку от SQL_CALC_FOUND_ROWS  никакого
Мало того по скорости он даже уступает count
Так что все правильно в opencart "сделано"

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.