2014-09-18 3 views
-2

Все, что мне хотелось бы знать, это то, сколько записей есть в моих результатах запроса, но MySQL дергает меня, говоря, что я потерял соединение. Сам запрос выполняется примерно через секунду.Медленный: получение результатов подсчета запроса с использованием подзапроса

SELECT COUNT(*) FROM 
(SELECT my208.eid AS contact, name AS the_status, cid208.lastmod AS status_date, boo208.boo_medium 
FROM the_emails.my208 
LEFT JOIN the_emails.cid208 ON cid208.eid = my208.eid 
LEFT JOIN the_emails.boo208 ON boo208.eid = my208.eid 
LEFT JOIN the_config.classes ON boo208.class_id = classes.id) foo 

Почему это занимает так много времени и есть лучший способ?

+1

Почему бы не включать 'COUNT (*)' в внутренний сам запрос. – Rahul

+0

По всей вероятности, на столе у ​​вас неправильные условия соединения. Однако без дополнительной информации, такой как данные выборки, нельзя сказать. –

+0

@ GordonLinoff вы, вероятно, правы, это мой первый день, погружаясь в db в новую роль, и я сейчас изучаю. Я бы подумал, что если я могу запустить запрос foo сам в мгновение ока, то, конечно, подсчет результатов этого тоже должен быть быстрым? –

ответ

0

Включите count(*) в свой внутренний запрос. См. Измененный запрос ниже.

Дайте ему попробовать

SELECT my208.eid AS contact, 
name AS the_status, 
cid208.lastmod AS status_date, 
boo208.boo_medium, 
COUNT(*) as total_records 
FROM the_emails.my208 
LEFT JOIN the_emails.cid208 ON cid208.eid = my208.eid 
LEFT JOIN the_emails.boo208 ON boo208.eid = my208.eid 
LEFT JOIN the_config.classes ON boo208.class_id = classes.id 
+0

О, я думаю, что я создал путаницу. the_emails - это база данных, а не таблица –

+0

Не является ли имя_базы именем базы данных? – Gervs

+0

@ Gervs да, это правильно –

Смежные вопросы