|
MySQL.RU - Webboard
Вернуться
Оптимизация запроса (Александр) 09/04/2009 - 16:55:38
Re: Оптимизация запроса (rust) 10/04/2009 - 23:09:35
From: Александр - 09/04/2009 - 16:55:38
Subject:Оптимизация запроса
-----------------
Всем здрасте.
есть задача оптимизировать следующий запрос
SELECT ip_groups.ip_group_id, ip_groups.uname, 'Password', ip_groups.upass, ':=' \
FROM ip_groups \
LEFT JOIN iptraffic_service_links ON (ip_groups.ip_group_id=iptraffic_service_links.ip_group_id) \
LEFT JOIN service_links ON (iptraffic_service_links.id=service_links.id) \
LEFT JOIN accounts ON (accounts.id=service_links.account_id) \
WHERE ip_groups.uname='user_test'
AND ip_groups.is_deleted='0'
AND iptraffic_service_links.is_deleted='0'
AND service_links.is_deleted='0'
AND accounts.is_deleted='0';
+-------------+-----------+----------+--------+----+
| ip_group_id | uname | Password | upass | := |
+-------------+-----------+----------+--------+----+
| 4410 | user_test | Password | TEST | := |
+-------------+-----------+----------+--------+----+
1 row in set (0.28 sec)
данный запрос используется радиус сервером для авторизации пользователей. в час пик когда обрабатывается порядка 300 запросов в минуту радиус не авторизует некоторых пользователей из-за задержек mysql.
на сколько я понимаю, самое "тяжелое" в этом запросе - это исключить все строки помеченные is_deleted, но отказаться от этого к сожалению нельзя.
вот описание таблиц
desc accounts;
+----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| balance | double | NO | | 0 | |
| account_name | varchar(255) | NO | | | |
| credit | double | NO | | 0 | |
| flags | int(11) | NO | | 0 | |
| is_blocked | int(11) | NO | | 0 | |
| vat_rate | double | NO | | 0 | |
| sale_tax_rate | double | NO | | 0 | |
| int_status | int(11) | NO | | 0 | |
| block_recalc_abon | int(11) | NO | | 0 | |
| block_recalc_prepaid | int(11) | NO | | 0 | |
| unlimited | int(11) | NO | | 0 | |
| is_deleted | int(11) | NO | | 0 | |
+----------------------+--------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)
desc service_links;
+----------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | NULL | |
| account_id | int(11) | NO | MUL | NULL | |
| service_id | int(11) | NO | | NULL | |
| tariff_link_id | int(11) | NO | | NULL | |
| is_deleted | int(11) | NO | | 0 | |
+----------------+---------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
desc iptraffic_service_links;
+---------------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ip_group_id | int(11) | NO | | NULL | |
| downloaded_id | int(11) | NO | | NULL | |
| is_deleted | int(11) | NO | | 0 | |
+---------------+---------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
desc ip_groups;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ip_group_id | int(11) | NO | MUL | NULL | |
| ip | int(11) | NO | | 0 | |
| mask | int(11) | NO | | -1 | |
| uname | varchar(64) | NO | | NULL | |
| upass | varchar(64) | NO | | NULL | |
| mac | varchar(32) | NO | | | |
| allowed_cid | varchar(32) | NO | | | |
| ip_type | int(11) | NO | | 0 | |
| router_id | int(11) | NO | | 0 | |
| create_date | int(11) | NO | | 0 | |
| delete_date | int(11) | NO | | 0 | |
| is_deleted | int(11) | NO | | 0 | |
+-------------+-------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)
буду благодарен если кто нибудь подскажет в каком направлении двигаться.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
35345
|
|