У меня есть эта таблица:мне нужна помощь, чтобы переписать мой запрос в MySQL
ID ITEM
-----------------
0001 345
0001 345
0001 120
0002 567
0002 034
0002 567
0003 567
0004 533
0004 008
......
и для того, чтобы получить этот результат:
ID ITEM CNT
1 008 0
1 034 0
1 120 1
1 345 2
1 533 0
1 567 0
2 008 0
2 034 1
...
CNT являются вхождений каждого элемента для каждый отличается ID
я запускаю этот запрос:
select driver.id, driver.item, coalesce(count(t1.id), 0)
from (select id.id, item.item
from (select distinct id from Table1) id cross join
(select distinct item from Table1) item
) driver left outer join
Table1 t1
on driver.id = t1.id and driver.item = t1.item
group by driver.id, driver.item;
Этот запрос принимает навсегда, и до сих пор не закончил после дня .. Это результат Объяснения:
idx_id и idx_code являются индексы для ID и ITEM
Может вы даете мне несколько советов о том, как улучшить мой запрос, чтобы он работал быстрее и, надеюсь, закончил? Спасибо
Результат не совсем объясняет, чего вы хотите достичь. – ep0
Возможный дубликат [Считать запрос слишком длинным - прошло более 24 часов] (http://stackoverflow.com/questions/17996652/count-query-is-taking-too-long-over-24-hours-have -passed) – Chococroc
CNT - это вхождения каждого элемента для каждого отдельного идентификатора. – user2578185