![](/img/trans.png)
[英]MySQL SELECT COUNT(1) statement too slow on table with millions of rows
[英]MySQL - How to select the “max” of a “count” column for a table with millions of records?
我有一個名為ticket_log
的表,其中包含數百萬條記錄。 每個票證日志都針對一個票證,因此ticket_log表具有一個ticket_id
列。 我需要找出哪個票證具有最大數量的日志。
如果該表只有幾千個條目,那么下面的查詢將很容易工作-
select ticket_id, count(ticket_log_id) as myCount
from ticket_log
group by ticket_id
order by myCount desc limit 1
但是,當我嘗試在具有數百萬條記錄的表上運行此命令時,查詢將永遠耗費時間。 一些優化技術建議我們可以向查詢添加排序過濾器,例如, where ticket_created > '2014'
,但這不是一個選擇。
在這種情況下,如何針對大量記錄優化查詢?
更新 : 查詢花費了一個多小時來運行具有數百萬條記錄的表。
如果您有tickets
表,則以下操作可能會更快:
select ticket_id,
(select count(*)
from ticket_log tl
where t.ticket_id = tl.ticket_id
) as mycount
from tickets t
order by myCount desc
limit 1;
這可以利用ticket_log(ticket_id)
上的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.