簡體   English   中英

MySQL-如何為具有數百萬條記錄的表選擇“計數”列的“最大值”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM