Над моей таблицей mysql.Столбец dvr_id
имеет значения того же первичного ключа таблицы dealer_visit_id
, а dvr_id
является столбцом, допускающим значение NULL.Мне нужно получить все записи таблицы dealer_visit, что очень просто.Но суть в том, что наряду со всеми записями мне нужен столбец "count" из dvr_id
, соответствующий каждой извлекаемой записи.
например: если я хочу получить записьс dealer_visit_id
2660 , я напишу запрос как
select col1,col2,col3, (SELECT count(dvr_id) from dealer_visit where dvr_id=dealer_visit_id GROUP BY dvr_id as totalDVRs)
from dealer_visit;
Нужно что-то вроде этого, но запрос слишком медленный, когда я пытаюсь получить 1000+ записей.чем за 9 секунд, чтобы получить записи.Когда я удаляю запрос COUNT , он выбирает более 1000 записей в течение 1-1,5 секунды.
Как оптимизировать запрос, чтобы получать записи вместе с количеством строк в зависимости от 1 столбцазначение?
Надеюсь, в моем вопросе все ясно.
Редактировать 1: Предположим, набор данных выглядит следующим образом:
Теперь, если яполучить запись с dealer_visit_id 33, я должен получить строку с dealer_visit_id 33 ALONG WITH count (dvr_id), имеющим 33, как в примере набора данных Так что ожидаемый вывод для вышеуказанного набора данныхдолжно быть:
Ожидаемый вывод для запроса на выборку (с количеством столбцов dvr_id, имеющим значение 33 в качестве значения) файла dealer_visit_id = 33
| dealer_visit_id | employee_id | originally_created_by | dealer_id | COUNT(dvr_id) |
--------------------------------------------------------------------------------
| 33 | 20 | 20 | 226 | 6 |
Количество (dvr_id) = 6 является важной вещью в моемвопрос, который я пытаюсь получить быстро.Здесь вы видите, что в результате получается строка с dealer_visit_id = 33 и числом чего-то, что можно назвать его подстроками или связанными строками, равными 6 в соответствии с примером набора данных.
Ниже выводится таблица объяснений
Field Type Null Key Default Extra
---------------------- ---------------------------- ------ ------ ------- ----------------
dealer_visit_id int(10) unsigned NO PRI (NULL) auto_increment
employee_id int(10) unsigned NO (NULL)
originally_created_by int(10) unsigned YES (NULL)
dealer_id int(10) unsigned NO (NULL)
dvr_id int(10) unsigned YES (NULL)
dealer_emo_id bigint(10) unsigned YES (NULL)
department enum('SALES','ASSURED','EM') YES (NULL)
dvr_type enum('FOLLOWUP','DVR') YES (NULL)
present_members varchar(4096) YES (NULL)
visit_date date NO (NULL)
location varchar(45) YES (NULL)
overall_remarks text YES (NULL)
active tinyint(1) YES 1
is_complete tinyint(1) YES 1
is_closed tinyint(1) YES (NULL)
is_data_migrated tinyint(1) YES 0
report_close_date datetime YES (NULL)
report_completion_date datetime YES (NULL)
followup_number int(11) YES (NULL)
total_followups int(11) unsigned YES 0
last_modified_date datetime YES (NULL)
autosave_time datetime YES (NULL)
create_date datetime NO (NULL)
updated_by int(10) unsigned NO (NULL)
nearest_visit_date date YES (NULL)