powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят некоторые запросы форума punbb
15 сообщений из 15, страница 1 из 1
Тормозят некоторые запросы форума punbb
    #37047285
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток.
Есть форум punbb, недавно переехал с mysql 5.0.67 на 5.1.51, вылезли некоторые непонятные тормоза.

Там, например, такой запрос для вывода страницы темы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded( 3 ,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1
where r1.user_id = p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2
where r2.user_id = p.poster_id) as count_rep_minus FROM posts AS p INNER JOIN users AS u ON u.id=p.poster_id INNER JOIN
groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!= 1  AND o.idle= 0 )
WHERE p.topic_id= 14046  ORDER BY p.id LIMIT  50 , 50 ;

его EXPLAIN показывает, что всё более-менее нормально:
Хороший EXPLAIN


А вот тот-же самый запрос, но с другими числами
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded( 27 ,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1
where r1.user_id = p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2
where r2.user_id = p.poster_id) as count_rep_minus FROM posts AS p INNER JOIN users AS u ON u.id=p.poster_id INNER JOIN
groups AS g ON g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!= 1  AND o.idle= 0 )
WHERE p.topic_id= 8993  ORDER BY p.id LIMIT  25050 , 50 ;
нещадно тормозит и его EXPLAIN вот такой
Плохой EXPLAIN


CREATE TABLE users
Код: plaintext
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.
CREATE TABLE `users` (
  `id` int( 10 ) unsigned NOT NULL AUTO_INCREMENT,
  `group_id` int( 10 ) unsigned NOT NULL DEFAULT '4',
  `username` varchar( 200 ) NOT NULL DEFAULT '',
  `password` varchar( 40 ) NOT NULL DEFAULT '',
  `email` varchar( 50 ) NOT NULL DEFAULT '',
  `title` varchar( 50 ) DEFAULT NULL,
  `realname` varchar( 40 ) DEFAULT NULL,
  `url` varchar( 100 ) DEFAULT NULL,
  `jabber` varchar( 75 ) DEFAULT NULL,
  `icq` varchar( 12 ) DEFAULT NULL,
  `msn` varchar( 50 ) DEFAULT NULL,
  `aim` varchar( 30 ) DEFAULT NULL,
  `yahoo` varchar( 30 ) DEFAULT NULL,
  `location` varchar( 30 ) DEFAULT NULL,
  `use_avatar` tinyint( 1 ) NOT NULL DEFAULT '0',
  `signature` text,
  `disp_topics` tinyint( 3 ) unsigned DEFAULT NULL,
  `disp_posts` tinyint( 3 ) unsigned DEFAULT NULL,
  `email_setting` tinyint( 1 ) NOT NULL DEFAULT '1',
  `save_pass` tinyint( 1 ) NOT NULL DEFAULT '1',
  `notify_with_post` tinyint( 1 ) NOT NULL DEFAULT '0',
  `show_smilies` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_img` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_img_sig` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_avatars` tinyint( 1 ) NOT NULL DEFAULT '1',
  `show_sig` tinyint( 1 ) NOT NULL DEFAULT '1',
  `timezone` float NOT NULL DEFAULT '0',
  `language` varchar( 25 ) NOT NULL DEFAULT 'English',
  `style` varchar( 25 ) NOT NULL DEFAULT 'Oxygen',
  `num_posts` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `last_post` int( 10 ) unsigned DEFAULT NULL,
  `registered` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `registration_ip` varchar( 15 ) NOT NULL DEFAULT '0.0.0.0',
  `last_visit` int( 10 ) unsigned NOT NULL DEFAULT '0',
  `admin_note` varchar( 30 ) DEFAULT NULL,
  `activate_string` varchar( 50 ) DEFAULT NULL,
  `activate_key` varchar( 8 ) DEFAULT NULL,
  `reputation_enable` smallint( 6 ) DEFAULT '1',
  `reputation_enable_adm` tinyint( 1 ) unsigned DEFAULT '1',
  `clone` int( 11 ) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `users_registered_idx` (`registered`),
  KEY `users_username_idx` (`username`( 8 )),
  KEY `statidx` (`last_post`,`username`,`id`)
) ENGINE=MyISAM AUTO_INCREMENT= 8874  DEFAULT CHARSET=cp1251 ROW_FORMAT=FIXED

В чём может быть дело?
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047384
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barvinok, видимо неудачное соотношение числа юзеров и ожидающегося числа постов в этой теме. mysql решил начать строить объединение с users. эта плохая стратегия. Попробуй влепи туда use index (posts_topic_idx). не поможет - так force index.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047391
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот еще интересная штука, но сомнительная
optimizer_search_depth
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_optimizer_search_depth
If set to 63, the optimizer switches to the algorithm used in MySQL 5.0.0 (and previous versions) for performing searches. The value of 63 is deprecated and will be treated as invalid in a future MySQL release.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047410
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwindBarvinok, видимо неудачное соотношение числа юзеров и ожидающегося числа постов в этой теме. mysql решил начать строить объединение с users. эта плохая стратегия. Попробуй влепи туда use index (posts_topic_idx). не поможет - так force index.
Спасибо, помогло! :)
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047427
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barvinok, а что optimizer_search_depth ? портить регулярно обновляемый базовый код скрипта может оказаться неудобно.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047428
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwindBarvinok, а что optimizer_search_depth ? портить регулярно обновляемый базовый код скрипта может оказаться неудобно.
Да, но я так понял что эта переменная deprecated, и с надеждой на будущие обновления мускуля её вообще лучше не трогать?
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047431
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barvinok, им соврать - раз плюнуть. переменную ведь в недавно вышедший 5.5 перенесли.
наверняка у тебя еще есть подобные запросы.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #37047492
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwindBarvinok, им соврать - раз плюнуть. переменную ведь в недавно вышедший 5.5 перенесли.
наверняка у тебя еще есть подобные запросы.
Да ладно, я лучше поправлю. Оно так портабельнее будет.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Тормозят некоторые запросы форума punbb
    #39086221
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за некропостинг, но опять-таки тот же запрос и те же проблемы того же форума в связи с апгрейдом.
Проблемный запрос на получение обычной страницы темы с сообщениями
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note,
u.reputation_enable, p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message,
p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online, IsShielded(3,p.poster_id) AS shield,
(select count(*) from reputation rp where rp.post_id = p.id) as repos, (select SUM(r1.rep_plus) from reputation r1 where r1.user_id =
p.poster_id) as count_rep_plus, (select SUM(r2.rep_minus) from reputation r2 where r2.user_id = p.poster_id) as
count_rep_minus

FROM posts AS p USE INDEX (posts_topic_id_idx) left JOIN users AS u ON u.id=p.poster_id left JOIN groups AS g ON
g.g_id=u.group_id LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=8993 ORDER BY p.id LIMIT
49550,50


Суть проблемы: запрос выполняется ненормально долго -- как минимум минут 10, окончания ни разу дождаться не удалось.
До апгрейда типичное время было порядка 2-3 секунд на том же железе.

extended explain

его explain тоже иногда виснет.

таблица u
Код: sql
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.
CREATE TABLE `users` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`group_id` INT(10) UNSIGNED NOT NULL DEFAULT '4',
	`username` VARCHAR(200) NOT NULL DEFAULT '',
	`password` VARCHAR(40) NOT NULL DEFAULT '',
	`email` VARCHAR(50) NOT NULL DEFAULT '',
	`title` VARCHAR(50) NULL DEFAULT NULL,
	`realname` VARCHAR(40) NULL DEFAULT NULL,
	`url` VARCHAR(100) NULL DEFAULT NULL,
	`jabber` VARCHAR(75) NULL DEFAULT NULL,
	`icq` VARCHAR(12) NULL DEFAULT NULL,
	`msn` VARCHAR(50) NULL DEFAULT NULL,
	`aim` VARCHAR(30) NULL DEFAULT NULL,
	`yahoo` VARCHAR(30) NULL DEFAULT NULL,
	`location` VARCHAR(30) NULL DEFAULT NULL,
	`use_avatar` TINYINT(1) NOT NULL DEFAULT '0',
	`signature` TEXT NULL,
	`disp_topics` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
	`disp_posts` TINYINT(3) UNSIGNED NULL DEFAULT NULL,
	`email_setting` TINYINT(1) NOT NULL DEFAULT '1',
	`save_pass` TINYINT(1) NOT NULL DEFAULT '1',
	`notify_with_post` TINYINT(1) NOT NULL DEFAULT '0',
	`show_smilies` TINYINT(1) NOT NULL DEFAULT '1',
	`show_img` TINYINT(1) NOT NULL DEFAULT '1',
	`show_img_sig` TINYINT(1) NOT NULL DEFAULT '1',
	`show_avatars` TINYINT(1) NOT NULL DEFAULT '1',
	`show_sig` TINYINT(1) NOT NULL DEFAULT '1',
	`timezone` FLOAT NOT NULL DEFAULT '0',
	`language` VARCHAR(25) NOT NULL DEFAULT 'English',
	`style` VARCHAR(25) NOT NULL DEFAULT 'Oxygen',
	`num_posts` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`last_post` INT(10) UNSIGNED NULL DEFAULT NULL,
	`registered` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`registration_ip` VARCHAR(64) NOT NULL DEFAULT '0.0.0.0',
	`last_visit` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`admin_note` VARCHAR(30) NULL DEFAULT NULL,
	`activate_string` VARCHAR(50) NULL DEFAULT NULL,
	`activate_key` VARCHAR(8) NULL DEFAULT NULL,
	`reputation_enable` SMALLINT(6) NULL DEFAULT '1',
	`reputation_enable_adm` TINYINT(1) UNSIGNED NULL DEFAULT '1',
	`clone` INT(11) NULL DEFAULT '0',
	PRIMARY KEY (`id`),
	INDEX `users_registered_idx` (`registered`),
	INDEX `users_username_idx` (`username`(8)),
	INDEX `statidx` (`last_post`, `username`, `id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=10203
;


таблица g
Код: sql
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.
CREATE TABLE `groups` (
	`g_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`g_title` VARCHAR(50) NOT NULL DEFAULT '',
	`g_user_title` VARCHAR(50) NULL DEFAULT NULL,
	`g_read_board` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_replies` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_topics` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_polls` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_posts` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_posts` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_topics` TINYINT(1) NOT NULL DEFAULT '1',
	`g_set_title` TINYINT(1) NOT NULL DEFAULT '1',
	`g_search` TINYINT(1) NOT NULL DEFAULT '1',
	`g_search_users` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_subjects_interval` SMALLINT(6) NOT NULL DEFAULT '300',
	`g_post_flood` SMALLINT(6) NOT NULL DEFAULT '30',
	`g_search_flood` SMALLINT(6) NOT NULL DEFAULT '30',
	`g_rep_minus_min` INT(10) UNSIGNED NULL DEFAULT '0',
	`g_rep_plus_min` INT(10) UNSIGNED NULL DEFAULT '0',
	`g_rep_enable` SMALLINT(6) NULL DEFAULT '1',
	`g_post_comments` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_downloads` TINYINT(1) NOT NULL DEFAULT '1',
	`g_post_links` TINYINT(1) NOT NULL DEFAULT '1',
	`g_edit_comments` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_downloads` TINYINT(1) NOT NULL DEFAULT '1',
	`g_delete_links` TINYINT(1) NOT NULL DEFAULT '1',
	PRIMARY KEY (`g_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=8
;


таблица p
Код: sql
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.
CREATE TABLE `posts` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`poster` VARCHAR(200) NOT NULL DEFAULT '',
	`poster_id` INT(10) UNSIGNED NOT NULL DEFAULT '1',
	`poster_ip` VARCHAR(40) NULL DEFAULT NULL,
	`poster_email` VARCHAR(50) NULL DEFAULT NULL,
	`message` TEXT NOT NULL,
	`hide_smilies` TINYINT(1) NOT NULL DEFAULT '0',
	`posted` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`edited` INT(10) UNSIGNED NULL DEFAULT NULL,
	`edited_by` VARCHAR(200) NULL DEFAULT NULL,
	`topic_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`internal_id` INT(11) NULL DEFAULT NULL,
	`dl_id` INT(11) NULL DEFAULT NULL,
	`isocc` CHAR(2) NULL DEFAULT 'UN',
	PRIMARY KEY (`id`, `poster_id`),
	INDEX `posts_topic_id_idx` (`topic_id`, `id`),
	INDEX `posts_multi_idx` (`poster_id`, `topic_id`),
	INDEX `statidx` (`posted`),
	INDEX `statidx2` (`poster_id`, `posted`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=788013
;


таблица о
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `online` (
	`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '1',
	`ident` VARCHAR(200) NOT NULL DEFAULT '',
	`logged` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`idle` TINYINT(1) NOT NULL DEFAULT '0',
	`ip` VARCHAR(15) NULL DEFAULT NULL,
	INDEX `online_user_id_idx` (`user_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MEMORY
;


таблица r
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE `reputation` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`from_user_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`time` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`post_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	`reason` TEXT NOT NULL,
	`rep_plus` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`rep_minus` TINYINT(1) UNSIGNED NOT NULL DEFAULT '0',
	`topics_id` INT(10) UNSIGNED NOT NULL DEFAULT '0',
	PRIMARY KEY (`id`),
	INDEX `rep_changes` (`rep_minus`, `rep_plus`, `user_id`),
	INDEX `rep_uid_only` (`user_id`),
	INDEX `rep_post` (`post_id`)
)
COLLATE='cp1251_general_ci'
ENGINE=MyISAM
ROW_FORMAT=FIXED
AUTO_INCREMENT=43387
;

...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39086277
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barvinok,

для начала уберите USING INDEX и сделайте ANALYSE TABLES.

потом можно сконцентрироватся на
ЛИМИТ ххххх, 50 -- сделать типа:

select ........... (только поля, БЕЗ sum())....
from post p
where p.category_id = 12345
order by p.id desc
limit 234546, 50

...а потом лефт джоинить всю остальную лабуду...включая SUM()...
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39086428
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javajdbc,

USE INDEX убрал, ANALYZE TABLE везде выдаёт ОК.
Теперь вот что интересно обнаружилось. Запрос в таком виде (убрал внутренние select'ы, отвечающие за скрытых юзеров и подсчёт репутации)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, u.reputation_enable,
p.id, p.poster AS username, p.poster_id, p.poster_ip, LOWER(p.isocc) as isocc, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by,
g.g_id, g.g_user_title,
o.user_id AS is_online
FROM posts AS p
left JOIN users AS u ON u.id=p.poster_id
left JOIN groups AS g ON g.g_id=u.group_id
LEFT JOIN online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0)
WHERE p.topic_id=8993 ORDER BY p.id LIMIT 49550,50


отрабатывает вполне сносно -- 0.7 секунды.
Если вернуть параметры
Код: sql
1.
IsShielded(3,p.poster_id) AS shield, (select count(*) from reputation rp where rp.post_id = p.id) as repos


где функция IsShielded это
Код: sql
1.
RETURN (SELECT (COUNT(*)>0) FROM shield WHERE (owner=s_owner) AND (target=s_target))


то с ними исходный запрос крутится 3.5 секунды, а если вернуть любой из остальных двух подселектов
Код: sql
1.
2.
(select SUM(r1.rep_plus) from reputation r1 where r1.user_id = p.poster_id) as count_rep_plus,
(select SUM(r2.rep_minus) from reputation r2 where r2.user_id = p.poster_id) as count_rep_minus


то как раз и виснет на очень длительное время.
его explain
Код: plaintext
1.
2.
id;select_type;table;type;possible_keys;key;key_len;ref;rows;filtered;Extra
1;SIMPLE;r1;ref;rep_uid_only;rep_uid_only;4;const;1062;100.00;\N
то есть, в качестве временной меры можно отключить функцию репутации, но всё-таки хотелось бы понять где затык.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39086664
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если создать индексы reputation(user_id,rep_plus) и reputation(user_id,rep_minus)?
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39086931
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barvinok , оработайте:

select p.id -- только ИД
from post p
where p.category_id = 8993
order by p.id desc
limit 25050, 50

наобум даю 5-20 милисекунд на эту операцию.

....потом подсоединяйте остальные таблицы
(включая еше раз post ) для вытаскивания всей остальной информации.
Подсоединяйте таблицы по одной и замеряйте время
(не забываем SQL_NO_CACHE).
Если заметите замедление -- выдавайте сюда время и ЕКСПЛАЙН до и после
замедления.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39086936
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarvinokПрошу прощения за некропостинг, но опять-таки тот же запрос и те же проблемы того же форума в связи с апгрейдом.

А можно узнать в связи с апгрейдом чего именно ?
можно же форум апргейдить. Разработчики обычно идут одной волной вперед. Новому mysql - новый форум и все должно быть нормально.
...
Рейтинг: 0 / 0
Тормозят некоторые запросы форума punbb
    #39110775
Barvinok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за полезные советы, пока что я просто отключил репутацию, так как форум переживает не лучшие времена и, скорее всего, скоро закроется.
"С апгрейдом" в смысле обновлением ОС и версии mysql.
А апгрейдить его нет смысла ещё и потому, что там очень много самописных функций, завязанных на исходники старой версии.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Тормозят некоторые запросы форума punbb
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]