А дальше создай ключи на колонки, которые он использует, но на которых нет ключей.
Помогите составить SQL-запрос
Модератор: terminus
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
- Gamerman
- капитан
- Сообщения: 1723
- Зарегистрирован: 2009-05-17 21:01:23
- Откуда: Украина, Ужгород - Днепр
- Контактная информация:
Re: Помогите составить SQL-запрос
Я это имел в виду:
Глюк глюком вышибают!
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- Electronik
- капитан
- Сообщения: 1593
- Зарегистрирован: 2008-11-15 17:32:56
- Откуда: Минск
- Контактная информация:
Re: Помогите составить SQL-запрос
Блин фигня какая то:
за апрель
explain
а если делаю индекс way,number с соответствующими полями из базы
то
explain
апрель
да и разница в них всё равно слишком большая
за апрель
за май474 rows in set (0.91 sec)
запрос590 rows in set (2 min 6.38 sec)
Код: Выделить всё
SELECT calls.number,count(*),sum(calls.duration),calls.way,phonebook.description from calls LEFT JOIN phonebook ON calls.number LIKE phonebook.number AND phonebook.login = 'atslog' OR calls.number LIKE phonebook.number AND phonebook.login IS NULL where (calls.timeofcall between '2011-04-01 00:00:00' AND '2011-04-30 23:59:59' AND calls.way='A' AND calls.number not in ( SELECT calls.number from calls where calls.timeofcall between '2011-04-01 00:00:00' AND '2011-04-30 23:59:59' AND calls.way='I') ) GROUP BY calls.number,calls.way,phonebook.description ORDER BY 1 DESC LIMIT 0,1000;
Код: Выделить всё
SELECT count(*) from calls where timeofcall between '2011-04-01 00:00:00' AND '2011-04-30 23:59:59';
+----------+
| count(*) |
+----------+
| 24393 |
+----------+
1 row in set (0.08 sec)
Код: Выделить всё
SELECT count(*) from calls where timeofcall between '2011-05-01 00:00:00' AND '2011-05-30 23:59:59';
+----------+
| count(*) |
+----------+
| 23542 |
+----------+
1 row in set (0.08 sec)
Код: Выделить всё
+----+--------------------+-----------+----------------+---------------+--------+---------+-------+------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+-----------+----------------+---------------+--------+---------+-------+------+----------------------------------------------+
| 1 | PRIMARY | phonebook | system | login | NULL | NULL | NULL | 0 | const row not found |
| 1 | PRIMARY | calls | ref | way | way | 4 | const | 8418 | Using where; Using temporary; Using filesort |
| 2 | DEPENDENT SUBQUERY | calls | index_subquery | way,number | number | 34 | func | 2 | Using where |
+----+--------------------+-----------+----------------+---------------+--------+---------+-------+------+----------------------------------------------+
то
explain
Код: Выделить всё
+----+--------------------+-----------+--------+-----------------------+------------+---------+------------+------+---------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+--------------------+-----------+--------+-----------------------+------------+---------+------------+------+---------------------+
| 1 | PRIMARY | phonebook | system | login | NULL | NULL | NULL | 0 | const row not found |
| 1 | PRIMARY | calls | ref | way,way_number | way_number | 4 | const | 6645 | Using where |
| 2 | DEPENDENT SUBQUERY | calls | ref | way,number,way_number | way_number | 38 | const,func | 2 | Using where |
+----+--------------------+-----------+--------+-----------------------+------------+---------+------------+------+---------------------+
3 rows in set (0.00 sec)
май474 rows in set (1.49 sec)
так и должно быть, последний уменьшился, но зато первый увеличился.590 rows in set (1 min 41.38 sec)
да и разница в них всё равно слишком большая
Предскажем будущее hw по логам и дампу, снимем сглаз и порчу с рута, поможем придумать пароль(С)
Блог
Блог