Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Оптимизация запроса (Coagulant) 07/03/2005 - 19:37:22
      Re: Оптимизация запроса (Dinky) 07/03/2005 - 20:12:16
      Re: Оптимизация запроса (Coagulant) 07/03/2005 - 20:47:26
      Re: Оптимизация запроса (Dinky) 07/03/2005 - 22:47:50
      Re: Оптимизация запроса (Coagulant) 08/03/2005 - 01:22:43



From: Coagulant - 07/03/2005 - 19:37:22
Subject:Оптимизация запроса
-----------------
Имеется запрос (слегка переделанный из форума phpbb), который выполняется достаточно медленно и хотелось бы его ускорить:

SELECT u.user_id, u.username, u.user_allow_viewonline, u.user_level, s.session_logged_in, s.session_time, s.session_page, s.session_ip, i.country
FROM phpbb_users u, phpbb_sessions s, phpbb_ip2country i
WHERE u.user_id = s.session_user_id
AND s.session_time >=1109870034
AND s.session_ip >= i.ip_from
AND s.session_ip <= i.ip_to
ORDER BY u.username ASC , s.session_ip ASC


Вот структура 3-х таблиц, из которых делается выборка:


CREATE TABLE `phpbb_users` (
`user_id` mediumint(8) NOT NULL default '0',
`username` varchar(25) NOT NULL default '',
`user_session_time` int(11) NOT NULL default '0',
`user_level` tinyint(4) default '0',
`user_allow_viewonline` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`user_id`),
KEY `user_session_time` (`user_session_time`)
) TYPE=MyISAM;

CREATE TABLE `phpbb_sessions` (
`session_id` char(32) NOT NULL default '',
`session_user_id` mediumint(8) NOT NULL default '0',
`session_start` int(11) NOT NULL default '0',
`session_time` int(11) NOT NULL default '0',
`session_ip` char(8) NOT NULL default '0',
`session_page` int(11) NOT NULL default '0',
`session_logged_in` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`session_id`),
KEY `session_user_id` (`session_user_id`),
KEY `session_id_ip_user_id` (`session_id`,`session_ip`,`session_user_id`)
) TYPE=MyISAM;

CREATE TABLE `phpbb_ip2country` (
`ip_from` varchar(8) NOT NULL default '',
`ip_to` varchar(8) NOT NULL default '',
`country_short` char(2) NOT NULL default '',
`country` varchar(50) NOT NULL default '',
PRIMARY KEY (`ip_from`,`ip_to`)
) TYPE=MyISAM;

Explain выдает следующее:

table type possible_keys key key_len ref rows Extra
i ALL PRIMARY NULL NULL NULL 54502 Using temporary; Using filesort
s ALL session_user_id NULL NULL NULL 66 Using where
u eq_ref PRIMARY PRIMARY 3 s.session_user_id 1



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
20664



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |