Вернуться   Форум SAPE.RU > Общие вопросы > Разработка и сопровождение сайтов

-->
Ответ
 
Опции темы
Старый 07.12.2011, 18:29   #11
Специалист
 
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
Elektra - как роза среди колючекElektra - как роза среди колючекElektra - как роза среди колючек
По умолчанию

Цитата:
Сообщение от Alexey Посмотреть сообщение
Вы не этому последовали) Посмотрите внимательней
Вы имеете в виду совет "не лезть"?

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

Добавлено через 24 минуты
Сори, ступила)

Прописала в index.php сайта такую строку:

$sql_result = $db->query( "UPDATE " . USERPREFIX . "_users SET ballz=news_num*3+comm_num+musik-mus WHERE 1" );

Обновляется при нажатии ф5 или очистке кеша, все отлично считается.

Последний вопрос (и отстану): как уменьшить нагрузку на сервер? Просто до этого стоял подобный запрос подсчета кол-ва новостей в каждой категории, так хостер жаловался на повышенную нагрузку. Что-то вообще можно сделать с этим запросом?

Последний раз редактировалось Elektra; 07.12.2011 в 18:29. Причина: Добавлено сообщение
Elektra вне форума   Ответить с цитированием
Старый 08.12.2011, 17:24   #12
Мастер
 
Аватар для dgek1111
 
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
dgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Elektra Посмотреть сообщение
Прописала в index.php сайта такую строку:
Так неправильно.
Это вы так при каждом запросе пересчитываете все строки в таблице - зачем так делать?

Раз вы хотите поле "ballz" то, надо понимать, вы это поле будете выводить в виде текста где-то на сайте, что-бы вывести значение этого поля Вы будете испльзовать запрос вида SELECT ballz FROM.....

Предлагается не создавать в таблице отдельное поле "ballz" а высчитывать это значение непосредственно при SELECTе.
Для этого надо:
SELECT ballz FROM..... заменить на
SELECT `news_num`*3+`comm_num`+`musik`-`music` AS ballz FROM...

MySQL при таком запросе произведет вычисление (`news_num`*3+`comm_num`+`musik`-`music`) и вернет результат в виде "виртуального" поля ballz

Последний раз редактировалось dgek1111; 08.12.2011 в 17:31.
dgek1111 вне форума   Ответить с цитированием
Старый 09.12.2011, 11:27   #13
Мастер
 
Регистрация: 17.03.2008
Сообщений: 638
Вес репутации: 237
ahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущееahsinis - прекрасное будущее
По умолчанию

На самом деле это совсем неочевидно, если из ballz сделать ключ, то выборка с условием по ballz может быть быстрее.
Надо конкретную задачу смотреть.
ahsinis вне форума   Ответить с цитированием
Старый 09.12.2011, 11:39   #14
Мне повезёт!
 
Аватар для Alexey
 
Регистрация: 05.05.2007
Сообщений: 1,076
Вес репутации: 276
Alexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущееAlexey - прекрасное будущее
По умолчанию

нет. складывать при селекте, а не апдейте.
__________________
Everything will be great in the end.
If it's not great, it's not the end.
Alexey вне форума   Ответить с цитированием
Старый 09.12.2011, 15:22   #15
Специалист
 
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
Elektra - как роза среди колючекElektra - как роза среди колючекElektra - как роза среди колючек
По умолчанию

Цитата:
Сообщение от Alexey Посмотреть сообщение
нет. складывать при селекте, а не апдейте.
А если четыре предыдущие цифры динамичные? Если просто при селекте (я пробовала) то цифра не обновляется. А мне нужно заставить ее обновляться...

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

$sql_result = $db->query( "UPDATE " . USERPREFIX . "_users SET ballz=news_num*3+comm_num+musik-mus where name='$user' " );

Можно ли как-то сделать, чтобы апдейтился только один юзер, а не вся таблица? То есть, например, зашел пользователь с id1 в свой профиль - обновились только его данные из dle_users. Или where name='$user' это и подразумевает? Но в таком случае, у меня как у админа обновляются данные любого пользователя, если я в его профиль захожу.
Elektra вне форума   Ответить с цитированием
Старый 09.12.2011, 15:58   #16
Мастер
 
Аватар для dgek1111
 
Регистрация: 10.10.2008
Адрес: Одесса Мама
Сообщений: 947
Вес репутации: 244
dgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущееdgek1111 - прекрасное будущее
По умолчанию

Цитата:
Сообщение от Elektra Посмотреть сообщение
А если четыре предыдущие цифры динамичные? Если просто при селекте (я пробовала) то цифра не обновляется.
Перечитайте еще раз мой предидущий пост, внимательно перечитайте.

Какая цифра не обновляется? В предложеном варианте эта цифра в базе и не хранится, а считается непосредственно при селекте.

Дайте точный пример кода где находится SELECT. Так будет проще

Цитата:
Сообщение от ahsinis Посмотреть сообщение
На самом деле это совсем неочевидно, если из ballz сделать ключ, то выборка с условием по ballz может быть быстрее.
Надо конкретную задачу смотреть.
Если необходима выборка с условием или сортировкой по "baliz" то тогда да - создание такого поля оправдано, во всех остальных случаях эффективнее считать baliz непосредственно при выводе.

Добавлено через 6 минут
Цитата:
Сообщение от Elektra Посмотреть сообщение
Хотелось бы, чтобы в профиле юзера выводилось актуальное значение цифры "balz".
Вот давайте сюда тот кусок кода где в профиле пользователя выводится "balz".

Последний раз редактировалось dgek1111; 09.12.2011 в 15:58. Причина: Добавлено сообщение
dgek1111 вне форума   Ответить с цитированием
Старый 10.12.2011, 02:00   #17
Специалист
 
Регистрация: 03.06.2008
Сообщений: 241
Вес репутации: 200
Elektra - как роза среди колючекElektra - как роза среди колючекElektra - как роза среди колючек
По умолчанию

Огромное спасибо всем за помощь, каждое сообщение наталкивало на определенные мысли и пробы. В итоге, методом проб и ошибок, поняв наконец, что мне вообще, по сути, запрос к БД не нужен, я решила все таким путем:

в файле профиля добавила строку
$tpl->set('{ball}', ($row['news_num']*3)+$row['comm_num']+$row['musik']-$row['music']);

Все прекрасно работает и обновляется=) Аллиллуйа! Блондинка справилась))

Спасибо еще раз, уважаемые форумчане. Без вас бы не получилось))
Elektra вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите составить запрос mysql Ufaweb Разработка и сопровождение сайтов 30 25.08.2012 17:40
Помогите срочно! Проблема с MySQL Sergeyka2003 Курилка 8 21.08.2010 18:26
помогите с MySQL 10012003 Разработка и сопровождение сайтов 21 19.05.2009 12:22
Помогите с Mysql Crudelis Курилка 46 02.07.2008 02:54
Знатоки MySQL помогите. Dreamer.rus Разработка и сопровождение сайтов 7 01.05.2008 10:00


Часовой пояс GMT +3, время: 10:34.