2015-07-21 36 views
3

當我使用指定的日期進行搜索時,數據加載時間過長。在我的項目中有兩個表,在一個表中有獨特的條目,我添加了「request_id」的唯一索引和自動遞增「id」的主索引。另一個表有多個記錄與request_id,並且我只添加了一個主索引來自動增加「id」。現在我要通過兩個表中的連接來搜索這些所有記錄,以檢查每個「request_id」的計數。 我使用下面的查詢: -我應該在mysql中的多個request_id上添加什麼類型的索引

SELECT 
     m.id,m.request_id as id,count(m.request_id) as count,m.reqtype,m.request_time,w.status as status,w.updated_time as updated_time,w.reg_date as reg_date 
       FROM 
        multi_requests m JOIN unique w ON m.request_id = w.request_id 
       WHERE 
        m.request_time 

       Between 
        '2015-07-05' 
       AND 
        '2015-07-06' 
       GROUP BY 
        m.request_id 
       ORDER BY 
        m.id asc 
       LIMIT 
        0,10" ; 

我也嘗試在multi_requests表中添加索引「REQUEST_ID」。但是,當我將索引添加到「request_id」並使用上面的查詢進行搜索時,它不會在UI上顯示任何類型的記錄。

在multi_requests表中有記錄總數= 6033030. 所以,請建議我..

+0

mysql和sql-server不兼容,挑一個 – Mihai

回答

1

這是您的查詢:

SELECT m.id, m.request_id as id, count(m.mac_address) as count, m.reqtype, 
     m.request_time, w.status as status, w.updated_time as updated_time, 
     w.reg_date as reg_date 
FROM multi_requests m JOIN 
    unique w 
    ON m.mac_address = w.mac_address 
WHERE m.request_time Between '2015-07-05' AND '2015-07-06' 
GROUP BY m.request_id 
ORDER BY m.id asc 
LIMIT 0, 10 ; 

這是一個有點奇怪,因爲你有一噸的列select,但只有一個在group by。讓我假設你知道你在做什麼。

對於此查詢,最佳索引是multi_requests(request_time, mac_address, request_id)unique(mac_address)

+0

其實我是爲了顯示所有記錄的UI報告,這就是爲什麼我在選擇中使用大量列的原因。 –

+0

我在表中唯一索引mac_address「唯一」,但我現在無法理解什麼類型的索引我應該添加其他列multi_requests(request_time,mac_address,request_id),如您在評論 –

+0

顯示對不起,我在我的錯誤所以現在我編輯我的帖子與request_id而不是mac_address –

相關問題