SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.10.2017 21:47:33

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Как правильно выбрать данные?

Есть две таблицы, в одной контрагенты, в другой документы изготавливаемые этими контрагентами.

Необходимо вывести в отсортированном порядке контрагентов с количеством изготовленных ими документов по нескольким критериям (период дат и еще одно поле).


SELECT `o`.`id`, `o`.`organ`, `o`.`numb`, `temp`.`count`
FROM `organ` AS `o`
JOIN (
SELECT `p`.`a_organ_to_certification_rds_organ_to_certification_reg_number`, COUNT(`p`.`a_organ_to_certification_rds_organ_to_certification_reg_number`) AS `count`
FROM `parse` AS `p`
WHERE `a_new_date_begin` BETWEEN '2016.07.01' AND '2017.10.12' AND `a_reglament` = '004/2011'
GROUP BY `a_organ_to_certification_rds_organ_to_certification_reg_number`) AS `temp` ON `o`.`numb` = `temp`.`a_organ_to_certification_rds_organ_to_certification_reg_number`
ORDER BY `temp`.`count` DESC
LIMIT 0, 50



не знаю, как правильно explain вставить.

НеизвестнаяТаблица
---
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| -: | - | - | - | - | - | - | - | -: | - |
| 1 | PRIMARY | <derived2> | ALL | \N | \N | \N | \N | 149 | Using temporary; Using filesort |
| 1 | PRIMARY | o | ALL | \N | \N | \N | \N | 862 | Using where; Using join buffer |
| 2 | DERIVED | p | ref | a_reglament,a_new_date_begin | a_reglament | 38 |  | 47192 | Using where; Using temporary; Using filesort |


это получается очень долго.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson