![]() |
|
Модераторы: skyboy |
![]()
|
|
| MyDarkSide |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 21.3.2008 Репутация: нет Всего: -1 |
Суть проблемы такова:
из одной основной таблицы и нескольких к ней присоединеных таблиц надо сделать сложную выборку, выборка сама по себе не сложная но, она большая в SQL запросе получается куча AND ( (..OR..) AND (..OR..) )) и т. д. - фильтр какие записи в дневниках можно показывать юзеру, а какие - нет плюс пагинатор и сортировка, короче запрос на несколько строк, и хотя большая часть условий простые логические условия есть сомнения по производительности, а уж по читабельности точно не айс. закэшировать этот запрос целиком нельзя, так как он меняется в зависимости от того какой юзер смотрит. Поэтому возникла другая идея: сначала выбирать из таблицы все записи без LIMIT отсортированные по нужному полю, а в поле where оставить только условия не зависящие от юзера (постоянные), далее выбирать из результата выборки с помощью mysql_fetch_assoc() одну строку - прогонять через фильтр уже на php, пока не наберется нужное количество записей (пагинация). Так как основная таблица большая то буфер с результатами запроса будет отъедать много памяти, с другой стороны, такой запрос уже хорошо кэшируется, вопрос: может ли MYSQL штатными средствами кэшировать результаты или они передаются сразу php машине - и дальше она должна их кэшировать ? |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
См. мануал, "The MySQL Query Cache" и соответственно SQL_CACHE в SELECT.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| MyDarkSide |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 21.3.2008 Репутация: нет Всего: -1 |
я несколько сумбурно описал проблему
скажем так кэширование на мускуле настроили и при одном и том же запросе он быстренько возвращает готовый результат но он возвращает его в буфер PHP и получается если одновременно происходит несколько одинаковых запросов которые возвращает много одинаковых результатов , то для каждого из них PHP будет создавать свой буфер с одинаковыми данными. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 106 Всего: 454 |
Ну а что ты тут поделаешь... РНР мудрить не будет. Ему зачем?
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |